(已结帖)工控PLC擂台第90期-PLC有关的一道征集题 点击:4456 | 回复: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-10-11 14:47:04
141楼

 

  关于“操作密度”的概念,是可以这样或那样理解的!不同的理解就有对擂主这个题目产生不同的答案。


  对“操作密度”的理解,占比较主流一点的是指分别单个输入开关的“操作密度”。即:或者是从I0.0输入的“双击”,也或者是从I0.1输入的“双击”。不采用“合成密度”的概念!


  站在这个主流理解的角度看,就觉得两个输入点共用一个定时器检测“操作密度”是错误的。如№34楼<九段电工>所批评的:采用“合成密度”概念是“严重的错误”!


wanggq

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

 

  所以,我还要考虑分别从两个输入点各自操作的“密度”为衡量标准去判断输入操作的“单击”或“双击”身份。


  于是,我在№31(以FX1n或以上档次的PLC为实验平台,)也提供了采用两个计时器(T200及T201)分别衡量俩输入点(X0及X1)输入的“操作密度”来判断输入“点击”的“单击”或“双击”身份。所写成的《答案程序3,以及№49楼贴出的其改良版本《答案程序4》。


wanggq

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

 

  №31楼的《答案程序3》:

  《答案程序3》之改进版本的《答案程序4》梯形图如下:





  《答案程序3》和《答案程序4》仍然是很简洁的。没有一丁点儿的多余!

 

wanggq

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

 

  为了照顾不愿意接受“理解甲”的这一部分人的感受,我从№63楼起又陆续贴出了运用“理解丙”概念的《答案程序5》和《答案程序6》。这两个答案程序对“输入点击”身份进行判断所依据的间隔时值既采用“过去时”,又结合“将来时”。


  以《答案程序6》为例:




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



  运用“理解丙”的概念来判断“输入点击”的身份,如下时序图所示:



wanggq

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

 

  为了答案程序在PLC上表现的“控制实时性”好一些,我们应该把“设定间隔时值”设置得较短一些。我的6个答案程序中都设置为0.3秒。


  如果要与其他人的答案程序在№119楼所示的“试金石”片断测试下进行验证比对,可以将我的答案程序中定时器的设定值设置为1秒,与其他验证比对的答案放在同一尺度上进行公平比对。也可以不改被测答案程序中的设定时值,而以被测答案程序中的具体设定时值为参照改动“试金石”片断中的脉冲间隔时值,保证相邻俩脉冲且仅限于俩脉冲居于被测答案程序设定时值以内。这样的测试比对也是公平的。



wanggq

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

 

  如果谁要标榜他的答案程序“动作正确,符合题目要求”,那就以“试金石”片断去上机运行检验他的答案程序。待“试金石”片断输出3个检验脉冲之后,看他的答案程序之俩输出位的状态是否都为“OFF”?!(允许该答案程序中的延时之时间到再评判)


  若检验的结果为“”,则足以判定他的答案程序不符合题目③之条款的要求!!


wanggq

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

 

  也许有人还认为《用实例讲解编程构思与技巧编程》之例三的第2种编程构思的范例程序是对№19楼答案程序的一种改良版本。而事实上该范例程序并没有起到对№19楼答案程序改良的作用!


  №19楼答案程序存在把某些原本按照题目③之条款规定应当判作“双击”身份的“点击”错判成“单击”之逻辑错误。第2种编程构思的范例程序不仅同样也存在这种逻辑错误,而且,还整出了另外的一种逻辑错误:在某种情况下,还会把原本按照题目①、②条款应该使对应(单个)输出位状态翻转的“单击”错判成“双击”,误使该答案程序指定的俩输出位强制归零!



wanggq

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

 

  该范例程序以“输入操作”的前沿触发计时条件M0.7:




wanggq

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

 

  又以“输入操作”后沿来计数:



wanggq

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

 

  这以“输入操作”前沿启动计时,又以“输入操作”后沿计数,有什么不对呢?


  呵呵…借给你一双慧眼,让你把这问题看个清清楚楚,明明白白!


wanggq

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

 

  假如有这样一种操作情形:




  你们说,I0.0的这个“输入操作”在这个擂台题目之下是算“单击”还是算“双击”?还有,I0.1的这个“输入操作”是算“单击”还是算“双击”?!


  你们作出这两个“输入操作”身份判断的根据是什么?!


wanggq

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

 

  我们回顾一下本擂台题目的内容:


  程序内容是这样的,
   ①.当I0.0为自复位按钮输入变量,按一下I0.0,q0.0输出为1,再按一下I0.0,q0.0输出0
   ②.当I0.1为自复位按钮输入变量,按一下I0.1,q0.1输出为1,再按一下I0.1,q0.1输出0

   ③.当双击(1S以内连续按两下按钮算双击)I0.0或I0.1任何一个按钮时,Q0.0,Q0.1都为0,当再次单击I0.0或者I0.1时,Q0.0或者Q0.1仍会延续①与②的逻辑。


  题目中对“输入操作划分了“双击”和“单击”,但没有限定“输入操作”的脉宽。也就是说这个题目所提到的“双击”和“单击”,其概念的内涵范围是很窄的,简单的,所以其外延范围就宽泛得多!这就要求答案程序要对各种脉宽的“输入信号”都要有正确的判断能力。


wanggq

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

 

  №151楼所示的输入操作时序图,其I0.0有一次“输入操作”,它的前后很远都没有其它“输入操作”。所以这一次“输入操作”不可能是“双击”。在本擂台题目下,“输入操作”的身份非“双”即“单”,没有第三种身份!即这一次“输入操作”的身份是“单击”!


  该时序图中I0.1也有一次“输入操作”,它又是什么身份呢?它的前后也是很远都没有其它“输入操作”,所以它也是一个“单击”的身份。


  另外补充一点:


  因为《用实例讲解编程构思与技巧编程》之例三的第2种编程构思的范例程序所运用的“合成密度”的概念,所以,我们在判定I0.0、I0.1“输入操作”之身份时,还要看时间上相邻的两次“输入操作”的间隔是否大于程序设定的“间隔时值”。在该时序图中很明显I0.0、I0.1“输入操作”的间隔是大于“设定时值”的,所以该时序图所示的I0.0、I0.1俩“输入操作”之身份都是“单击”!


wanggq

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

 

  输入操作是“单击”,正确的答案程序就应当实现本擂台题目①、②条款所规定的功能,使PLC相应的指定输出位的状态发生翻转,而不是去实现题目③条款所规定的“强制”俩指定输出位“归零”!


  但是,《用实例讲解编程构思与技巧编程》之例三的第2种编程构思的范例程序就会错把该时序图中原本属于“单击”的I0.1“输入操作”误判为“双击”身份了!


wanggq

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

 

  这就是《用实例讲解编程构思与技巧编程》之例三的第2种编程构思的范例程序中以“输入操作”前沿触发计时条件,又以“输入操作”后沿计数所带来的毛病。


wanggq

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

 

  其实,本擂台题目的答案完全用不着对“输入操作”计数!计数就把本来简单的题目给弄复杂了。


  这个题目实质上就是对“输入操作”的密度进行判断。使密度低的“操作”去实现题目①、②条款的功能,使密度高的“操作”去实现题目③条款的功能。


  “密度标准”就是相应答案程序中设定的相邻两次输入操作设定间隔时值”。


wanggq

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

 

  判断“输入操作”的密度,仅只需考察相邻两个“操作”的间隔时间就足以为正确判断提供充分的依据。


  接下来我再给出一个运用“理解丙”模式得到的概念所写成的答案程序7:



wanggq

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

 

  这个片断实现题目①条款的功能:




M0是输入点X0的“操作前沿”


wanggq

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

 

  这个片断实现题目②条款的功能:




  M1是输入点X1的“操作前沿”。


wanggq

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

 

  这个片断实现题目③条款的功能:




  T200是用于考察输入点X0的“输入操作”密度的定时器;T201是用于考察输入点X1的“输入操作”密度的定时器。



热门招聘
相关主题

官方公众号

智造工程师