求助,一道plc面试题的困惑
最近在网上搜索到了一道plc面试题,我先把作者的原话搬上来:PLC编程-关于一道简单面试题 2011年04月25日 我给出的笔试题中,其中有一道是要求当I0.0为1时,Q7.0-Q7.7这八个灯以5s间隔依次点亮,每个亮5s,走马灯式循环,直到I0.0为0时停止。 结果很是失望,一年半时间里,面试过不知道多少个人,情况大致是这样: 70%的人用各种点的串并联加定时器来搭,结果仍然是做不出来; 约10%的人用上面的办法做成功了; 约10%的人用计数器(C)对5S脉冲计数,之后如下方式输出: LD C==0 OUT Q7.0;...........................................LD C==7 OUT Q7.7 之后C==8时清零,重复以上动作。这样也算实现了。 约10%的人用移位的方法实现,这才是我期待的答案。讨论答案的时候有人提及某些小型PLC可能会没有循环移位指令,提醒一下,再差的PLC也会支持四则运算,自动化专业总得学过单片机的吧,那怎么想不到整数乘2就相当于左移,除2就相当于右移呢?再利用上进位寄存器或余数寄存器判断复位不就可以了,就算不知道进位寄存器或余数寄存器,那么可以在这个数为H80时不做乘法而为其赋H01,或为H01时不做除法而为其赋H80就可以了。 结果就是这样,我还没要求必须完整给出程序,思路正确就行,当然能直接给出程序最好。 而我最期待的,是采用循环加寻址操作,因为移位毕竟有限制,超过32位或64位就不能直接实现了,只能自己对多寄存器移位同时控制好数据的同步。而用寻址,可以很方便的扩展这个功能。我们设计一个算法时,除了要解决当前问题外,还要考虑这个算法能不能重用,如何做到重用,这样在类似的项目中可以方便套用它,会提高不少效率。 当然这种简单的东西实际工作是用不到的,我只是需要了解对方的编程思想以及对PLC的理解。虽然最初PLC是为了代替继电接触器而生,但时至今日,这东西已经有了突飞猛进的发展,如果我们在工作两三年后,还是只会用这么简单的方式解决问题,那就有点说不过去了。这么简单的问题,都要浪费上很多时间,工作效率大打折扣,结果还要死不少脑细胞。有人做这题用一个多小时最后做不对,有人两分钟就直接写完程序了,那一个系统上万步的程序,时间上就要差多少,更不要提质量了。 有人说,怕这样用PLC,会不稳定。我说,如果担心这个,那就不要用PLC了,既然它提供了这些功能,就应该是通过了测试的。虽然我们要把有可能出现的问题都考虑周全,以保证系统的可靠性,但天灾人祸的事任谁也没有办法的。如果真发生这样的问题,你可以直接给PLC厂家发邮件报告这个BUG。 其实如果我们单片机或汇编了解得多一点,会发现PLC很容易,指令系统都差不多,基本上就照着单片机的指令来的,当然有的提供了一些更高级一些的功能,如通信类指令,数据表格类指令等,另外如ST语言还可以操作数组,甚至有的PLC如AB能搞出类似对象的数据结构,但编程思想基本上还是一致的。或许因为我是学机械的,而当初又专门学过汇编,所以在使用PLC时才喜欢套用汇编的方式吧,虽然大学也开过两门PLC课程。 发发牢骚,希望能提醒刚进入工控这个行业的同行们,多一些创新思维,眼界要放宽,多接触些新东西,不要书上说老师说网上说,自己想出来的,未必就比别人差,如果所有的人都是书上说老师说网上说的,那人类不要发展了,早点刨坑把自己埋了吧。 ————————————————分割线——————————————分割线—_____—————————————— 见到这个题目后我也做了一遍,用三菱fx2n系列,第一次用的是定时器控制下一个灯,当下一个灯亮起的时候,同时使用复位指令对前一个灯置0.写的程序见图。(没有写完8个灯,只写了4个灯)。调试后没有问题。第二次是按照上面那个面试官的思路写的。问题就出现了,只能运行到第三个灯,后面的不能运行。(附图是我更改了几次的程序,开始的时候还使用了触电比较指令也一样没有到达预期目的) 现在想请教一下,假如我按照面试官的思路(即使用四则运算的乘法mul)该如何修改我的这段程序?谢谢!
漏了一个图了,现在这个图是使用四则运算的程序。上面两个图的顺序反了,不好意思! 这个东西要看具体情况,比如只是控制几个灯,那用PLC内部计时器加继电器控制是最简单的,干嘛用移位的那么复杂。
不过如果是控制成百上千个灯,那这个时候用移位的方法就显得很简单了,不用写上成百上千行程序。 没看太懂,不过那些东西都很有用。有时候感觉逻辑关系不知道怎么做,如果对这些东西熟悉的话就简单了。上面的程序用VC很好实现,而且调理清晰。 {:soso_e113:}管他捏!只要实现功能就来赛!不管白猫还是黑猫能捉老鼠就是好猫,关键问题是把问题攻克! 大哥 移位在大学课本里根本被忽略了,一般都是用功能指令来实现。比如这里的mov指令。所以用移位来实现的人很少哦。当热方法不是唯一的只有通过仿真后才能实践出最后的方法。 虽然看不懂,还学习下,以后备用 头大中,看都不敢看, apay 发表于 2012-2-7 22:40 static/image/common/back.gif
头大中,看都不敢看,
那段文字 看的确实头疼! 写的不错,其实我们上学学的是什么?知识的运用!学到的知识要举一反三,触类旁通。不过现在的课本在有些方面来说真的不能说好,讲了一大堆没用的话,真正有用的就那么一点。重点的东西还是要自己去总结思考。如果一个人想快速的学习掌握某技术要领,那看书会让他头大的很。因为他看不到一个总表。现在的书让我说应该在最前页或是最后页的地方加上总表,汇总一下书中所有的重点。如:某PLC编程手册中详细的说明了每个程序的含义、结构、使用条件、使用方法等,在最前页把所有的程序、列表、格式汇总一下。这样我们在看书的时候,只要一翻书就能看到自己学到哪里了,还有哪里不明白,不会的,第一时间了解到自己的学习状况,第一时间加深了所学知识的印象。当然,必要的笔记还是不能少的。
页:
[1]
2