(已结帖)工控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-03 07:05:18
21楼

 

  对题目的理解不同,就有不同的正确答案。

  

wanggq

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

引用 crf498959881 的内容:

 

  你的这个程序有问题。在按X0,X1第一下上升沿的时候Y0,Y1就已经反向了。只不过检测到按第二下时复位了而已。

 



  题目中的①、②要求:


  ①.当I0.0为自复位按钮输入变量,按一下 I0.0, q0.0输出为1,再按一下 I0.0,q0.0输出0

  ②.当I0.1为自复位按钮输入变量,按一下 I0.1, q0.1输出为1,再按一下 I0.1,q0.1输出0

 

  这怎么理解呢?我认为只要输入开关被按下了,对应的输出位就应该改变当前状态!而不应该要等上一个远远大于程序扫描周期、且远远大于人类感官反应时间的时值才发生对应的输出位翻转。 

 

wanggq

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

 

  如果我们摁动了输入开关之后,老长时间(相对我们感官反应而言)我们还看不到PLC做出相应的反应,则,我们就认为这个控制效果不是实时的!

  

wanggq

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

 

  题目中的③要求:


  ③.当双击(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-09-03 14:31:52
25楼

 

  譬如你在电脑上操作鼠标,“单击”屏幕上菜单中的某文件夹图标,其功能为“选中”该文件夹;“双击”该文件夹,其功能为“打开”该文件夹。


  当你“点击”该文件夹时,如果你的电脑要等待1000 ms ,以便确认你是否为“单击”或“双击”之后才发生相应的反应,那你不把这反应迟钝的电脑给砸了?!


  其实,在你点击前一次时,电脑就立即作出了相应的“选中”该文件夹的反应,紧随着你的后一次点击接踵而至,电脑又立即作出“打开”该文件夹的反应!


  我们从这个例子也看出:电脑也是把“双击”理解成“按键操作密度高于设定密度时的‘当前操作’(即当前的这一次操作叫双击,而不包括前一次操作。)”


wanggq

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

 

  在本帖中第一个贴出答案程序的网友<九段电工>,他所给出的答案程序也不例外的把这个“双击”理解成“按键操作密度高于设定密度时的‘当前操作’(即当前的这一次操作叫双击)”


  我们从他给出的答案程序中也能够看出:间隔小于设定时值的相邻两次的“输入键操作”,也是前一次“键操作”立即使相应的输出位状态发生改变,而后一次“键操作”才是将俩输出位归零!


  如果从这种版本的对“双击”的理解出发去看前一次的“键操作”就是一种“单击”的身份。输出位对“单击”身份的“键操作”的反应就理所应当的是:发生“状态的翻转”!


  不同的理解,对应不同的正确答案嘛!


wanggq

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

 

  请看4楼的程序段,操作键的上升沿首先是使相应的输出位状态翻转:



wanggq

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


  <紧接27楼的内容>


  在程序设定的间隔时值内发生的第2次“键操作”才叫“双击”,而先前的一次“键操作”在先前是以“单击”的身份出现的:



   我认为这个答案程序是比较正确的答案!因为我是这样理解的:键操作之前的间隔等于大于规定时值的当前一次“键操作”叫“单击”,之前间隔小于规定时值的当前一次“键操作”叫“双击”。而且还认为:输出位对相应的“单击”和“双击”都应该是实时的,而不应该要求“单击”或“双击”须等待(从前一次点击开始计时)1000毫秒之后才使相应的输出位发生状态翻转或归零!

 

wanggq

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

 

  <wanggq>在16楼,17楼分别贴出的《答案程序1》和《答案程序2》都是以FX1s为实验平台而做的两个答案。FX1s只有一个1 ms分辨率的定时器。所以,把两个操作键的间隔时值设定器共用一个T63来担任。这一点与<九段电工>的答案程序之效果也就有了一点点差别。除此之外的功能都是很接近的。

 

wanggq

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


  FX1s上有63点100 ms的定时器可用,但用100 ms 的定时器做“双击”间隔时值设定器太粗糙了,只能做较长时值的间隔,这样就使“双击”的控制实时性不好!那么改用10 ms 的定时器稍好一点,但在FX1s上用10 ms 定时器需多用一条给M8028置位的指令。


  为了减少答案程序中使用指令的条数,我采用了X0与X1合用一个1ms定时器T63来做间隔时值设定器。


wanggq

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

 

  改用FX1n及以上档次的FX系列PLC,就可以用10ms定时器也并不需多费额外的指令。


  下面给出答案程序3:(X0和X1各自拥有单独的间隔时值设定器,“双击”间隔时值设置为:0.3秒



   <答案程序3>的修正版本请参见<答案程序4>,用每一个“点击”的前沿对“间隔时值定时器”进行清零,以保证设定间隔时值不受“点击”脉宽的影响。

 

crf498959881

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:226
  • 注册:2008年2月17日
发表于:2012-09-03 20:37:53
32楼
引用 wanggq 的回复内容:   在本帖中第一个贴出答案程序的网友<九段电工>,他所给出的答案程序也不例外的把这个“双击”理解成“按键操作密度高于设定密度时的‘当前操作’(即当前的这一次操作叫双击)”  我们从他给出的答案程序中也能够看出:间隔小于设定时值的相邻两次的“输入键操作”,也是前一次“键操作”立即使相应的输出位状态发生改变,而后一次“键操作”才是将俩输出位归零!  < crf498959881>网友只看到 的简洁答案有:“在按X0,X1第一下上升沿的时候Y0,Y1就已经反向了。只不过检测到按第二下时复位了而已。”认为这是程序有问题。  < crf498959881>怎么就看不出<九段电工>答案程序也有相同的:“在按I0.0,I0.1第一下上升沿的时候Q0.0,Q0.1就已经反向了。只不过检测到按第二下时复位了而已”呢?!怎么就不认为这也是“程序有问题”呢?!  楼主<玻璃的心>说了:PLC类型任意选择。< crf498959881>该不会是认为西门子PLC程序不存在“问题”,FX系列PLC程序才会有“问题”吧! 

wanggq
西门子的程序错没错。因为我对西门子不了解就不做评论,但是你的程序不行那是确定的。关于鼠标单双击的问题你仔细看看的你鼠标是怎样动作的。难道是检测你在1S内按了多少次吗?

电工九段

  • 精华:2帖
  • 求助:8帖
  • 帖子:57帖 | 1381回
  • 年度积分:0
  • 历史总积分:5582
  • 注册:2006年4月29日
发表于:2012-09-03 21:04:47
33楼

第一次当然是按单击动作了,难道我不想双击复位的时候,每次单击都让我等一秒再动作啊。

我的程序也是经过模拟实验的,只是没贴出图来而已。

电工九段

  • 精华:2帖
  • 求助:8帖
  • 帖子:57帖 | 1381回
  • 年度积分:0
  • 历史总积分:5582
  • 注册:2006年4月29日
发表于:2012-09-03 21:19:52
34楼
回复内容:
对:wanggq关于   在16楼,17楼分别贴出的《答案程序1》和《答案程序2》都是以FX1s为实验平台而做的两个答案。FX1s只有一个1 ms分辨率的定时器。所以,把两个操作键的间隔时值设定器共用一个T63来担任。这一点与<九段电工>的答案程序之效果也就有了一点点差别。除此之外的功能都是一模一样的。内容的回复:


不能共用一个定时器的,不然我单击一下I0.0,再快速单击一下I0.1,效果变成双击归零两输出了,这是严重错误。

wanggq

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

 

  33楼的意见和我的观点不谋而合!即:每次单击不必等待!

 

wanggq

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

 

  我也可以接受34楼的意见“不能共用一个定时器”!请参见我在前面№31楼贴出的<答案程序3>中改用两个定时器(T200和T201)。

 

  共用一个定时器的做法是否为“严重错误”,这也得看是哪种版本的理解去衡量。如果以№15楼的版本去衡量,共用一个定时器的做法又未尝不可呢?这个版本是把两个点的输入密度合起来看的,是一个“合成密度”的概念。请<九段电工>看看№19楼<wyb2866255>的程序, <wyb2866255> 的答案程序不也是用一个“合成密度”的概念吗,不也是两个输入点(I0.0及I0.1)共用一个定时器T101吗?!


  请参见№19楼<wyb2866255>的答案程序之网络2和网络3(I0.0及I0.1共用一个定时器T101):

          

            

wanggq

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

 

  关于怎样理解一连串的“输入操作”中的“单击”和“双击”的区分,不同的人有不同的理解!也不必强求大家都要以某种观点为标准!

 

wanggq

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

 

  在之前,我请教过楼主什么是最好、最完全”的标准,也问过“可否如№15楼那样去理解题目的涵意”,因为没有得到任何的回答,所以我当是默许按自己的理解来答题呢!



wanggq

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

 

  假如本题目中“双击”的标准是1秒时间内的“两次键输入”,再假如,本题目还规定从“单击”的前沿或“1秒时间内的两次键输入”中的前次操作前沿开始须经过1秒才准许相应的输出位做出“状态翻转”或“复位归零”。而且,“键输入操作”还要在时间安排上,满足一定的分配规则。则,< crf498959881>网友在8楼的答案就很好!虽不是“最简”,但也离“最简”很近。


   < crf498959881>网友贴于8楼的答案程序在保证其功能效果完全一致的前提下稍微的改动一点点,可以把44步化为42步。


  具体的改动如下图所示:(这是 < crf498959881>网友的版权噢



  

wanggq

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

 

  如果把“双击”理解为:1秒时间内的“两次键输入”,那么问题出来了:



  2#、3#“两次键入”是 1秒时间内的“两次键输入”, 所以2# - 3#这一对“键入”算是“双击”。但3#、4#“两次键入”也是 1秒时间内的“两次键输入”,那么3# - 4#这一对“键入”算不算是“双击”呢?!


  在8楼< crf498959881>网友的答案程序里该怎么处理4#的“键输入”呢?


  8楼的程序是将4#这次的“键输入” 当作 “单击” 的身份来看的,这算不算与“这一版本的理解”相矛盾呢?


 


热门招聘
相关主题

官方公众号

智造工程师