机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 9550|回复: 16

求助,一道plc面试题的困惑

[复制链接]
发表于 2012-2-6 19:50:10 | 显示全部楼层 |阅读模式
最近在网上搜索到了一道plc面试题,我先把作者的原话搬上来:
; a3 I: ]2 j$ }% S" D) e
PLC编程-关于一道简单面试题
20110425
  我给出的笔试题中,其中有一道是要求当I0.01时,Q7.0-Q7.7这八个灯以5s间隔依次点亮,每个亮5s,走马灯式循环,直到I0.00时停止。
  结果很是失望,一年半时间里,面试过不知道多少个人,情况大致是这样:
  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语言还可以操作数组,甚至有的PLCAB能搞出类似对象的数据结构,但编程思想基本上还是一致的。或许因为我是学机械的,而当初又专门学过汇编,所以在使用PLC时才喜欢套用汇编的方式吧,虽然大学也开过两门PLC课程。
  发发牢骚,希望能提醒刚进入工控这个行业的同行们,多一些创新思维,眼界要放宽,多接触些新东西,不要书上说老师说网上说,自己想出来的,未必就比别人差,如果所有的人都是书上说老师说网上说的,那人类不要发展了,早点刨坑把自己埋了吧。
————————————————分割线—————  —————————分割线—  _____——————————————
见到这个题目后我也做了一遍,用三菱fx2n系列,第一次用的是定时器控制下一个灯,当下一个灯亮起的时候,同时使用复位指令对前一个灯置0.写的程序见图。(没有写完8个灯,只写了4个灯)。调试后没有问题。
第二次是按照上面那个面试官的思路写的。问题就出现了,只能运行到第三个灯,后面的不能运行。(附图是我更改了几次的程序,开始的时候还使用了触电比较指令也一样没有到达预期目的)
现在想请教一下,假如我按照面试官的思路(即使用四则运算的乘法mul)该如何修改我的这段程序?谢谢!2 n! |2 M0 t+ N  N& N/ N

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
回复

使用道具 举报

 楼主| 发表于 2012-2-6 19:51:56 | 显示全部楼层
漏了一个图了,现在这个图是使用四则运算的程序。上面两个图的顺序反了,不好意思!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x

点评

是啊,我对于这个程序也是没有点亮……并且更改了几次也没有成功。不知道你有没有什么好的建议呢?望不吝赐教!谢谢  发表于 2012-2-16 16:46
声明,我也是菜鸟,但也正在学这个。你的这个图我测了一下,一个灯也没点亮,看了一下程序,我感觉:1:第一行的D=50没有意义,后面不如直接在T0上赋值。2,你的第二行程序连续给V0一个常数2是不可变的,也就是说你  发表于 2012-2-16 15:52
回复 支持 反对

使用道具 举报

发表于 2012-2-6 22:34:09 | 显示全部楼层
这个东西要看具体情况,比如只是控制几个灯,那用PLC内部计时器加继电器控制是最简单的,干嘛用移位的那么复杂。) e4 g% q7 o* y% I8 O
不过如果是控制成百上千个灯,那这个时候用移位的方法就显得很简单了,不用写上成百上千行程序。

点评

嗯,应用的时候确实是这样的,但是在我们学习过程中,多加几种方法又何尝不好呢?呵呵  发表于 2012-2-6 22:50
回复 支持 反对

使用道具 举报

发表于 2012-2-7 13:19:09 | 显示全部楼层
没看太懂,不过那些东西都很有用。有时候感觉逻辑关系不知道怎么做,如果对这些东西熟悉的话就简单了。上面的程序用VC很好实现,而且调理清晰。
回复 支持 反对

使用道具 举报

发表于 2012-2-7 21:01:39 | 显示全部楼层
{:soso_e113:}管他捏!只要实现功能就来赛!不管白猫还是黑猫能捉老鼠就是好猫,关键问题是把问题攻克!
回复 支持 反对

使用道具 举报

发表于 2012-2-7 22:27:18 | 显示全部楼层
大哥 移位在大学课本里根本被忽略了,一般都是用功能指令来实现。比如这里的mov指令。所以用移位来实现的人很少哦。当热方法不是唯一的只有通过仿真后才能实践出最后的方法。

点评

fx2n的功能指令有9个模块:程序流指令、循环与移位、传送与比较、运算与逻辑、高速、数据、方便指令、还有2个I/O的  发表于 2012-2-8 20:40
回复 支持 反对

使用道具 举报

发表于 2012-2-7 22:29:55 | 显示全部楼层
虽然看不懂,还学习下,以后备用
回复 支持 反对

使用道具 举报

发表于 2012-2-7 22:40:49 | 显示全部楼层
头大中,看都不敢看,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-8 21:10:25 | 显示全部楼层
apay 发表于 2012-2-7 22:40
; g, n( q: V( Q, C7 g  O- o! o头大中,看都不敢看,
' x# N* F$ `8 x  s7 }4 \0 {0 {
那段文字 看的确实头疼!
回复 支持 反对

使用道具 举报

发表于 2012-2-13 21:53:02 | 显示全部楼层
写的不错,其实我们上学学的是什么?知识的运用!学到的知识要举一反三,触类旁通。不过现在的课本在有些方面来说真的不能说好,讲了一大堆没用的话,真正有用的就那么一点。重点的东西还是要自己去总结思考。如果一个人想快速的学习掌握某技术要领,那看书会让他头大的很。因为他看不到一个总表。现在的书让我说应该在最前页或是最后页的地方加上总表,汇总一下书中所有的重点。如:某PLC编程手册中详细的说明了每个程序的含义、结构、使用条件、使用方法等,在最前页把所有的程序、列表、格式汇总一下。这样我们在看书的时候,只要一翻书就能看到自己学到哪里了,还有哪里不明白,不会的,第一时间了解到自己的学习状况,第一时间加深了所学知识的印象。当然,必要的笔记还是不能少的。

点评

你说的很对!能不能回答我的那个疑问呢?就是如何用四则运算中的mul去处理呢?烦劳了!谢谢  发表于 2012-2-14 09:42
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-25 21:53 , Processed in 0.060383 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表