機(jī)械社區(qū)

標(biāo)題: 求助,一道plc面試題的困惑 [打印本頁(yè)]

作者: 還做讀書(shū)狼    時(shí)間: 2012-2-6 19:50
標(biāo)題: 求助,一道plc面試題的困惑
最近在網(wǎng)上搜索到了一道plc面試題,我先把作者的原話搬上來(lái):" ?2 ^6 u+ [  Z2 {+ Y+ `& L3 L
PLC編程-關(guān)于一道簡(jiǎn)單面試題
20110425
  我給出的筆試題中,其中有一道是要求當(dāng)I0.01時(shí),Q7.0-Q7.7這八個(gè)燈以5s間隔依次點(diǎn)亮,每個(gè)亮5s,走馬燈式循環(huán),直到I0.00時(shí)停止。
  結(jié)果很是失望,一年半時(shí)間里,面試過(guò)不知道多少個(gè)人,情況大致是這樣:
  70%的人用各種點(diǎn)的串并聯(lián)加定時(shí)器來(lái)搭,結(jié)果仍然是做不出來(lái);
  約10%的人用上面的辦法做成功了;
  約10%的人用計(jì)數(shù)器(C)對(duì)5S脈沖計(jì)數(shù),之后如下方式輸出:
  LD C==0 OUT Q7.0;...........................................LD C==7 OUT Q7.7
  之后C==8時(shí)清零,重復(fù)以上動(dòng)作。這樣也算實(shí)現(xiàn)了。
  約10%的人用移位的方法實(shí)現(xiàn),這才是我期待的答案。討論答案的時(shí)候有人提及某些小型PLC可能會(huì)沒(méi)有循環(huán)移位指令,提醒一下,再差的PLC也會(huì)支持四則運(yùn)算,自動(dòng)化專業(yè)總得學(xué)過(guò)單片機(jī)的吧,那怎么想不到整數(shù)乘2就相當(dāng)于左移,除2就相當(dāng)于右移呢?再利用上進(jìn)位寄存器或余數(shù)寄存器判斷復(fù)位不就可以了,就算不知道進(jìn)位寄存器或余數(shù)寄存器,那么可以在這個(gè)數(shù)為H80時(shí)不做乘法而為其賦H01,或?yàn)?font face="Times New Roman">H01時(shí)不做除法而為其賦H80就可以了。
  結(jié)果就是這樣,我還沒(méi)要求必須完整給出程序,思路正確就行,當(dāng)然能直接給出程序最好。
  而我最期待的,是采用循環(huán)加尋址操作,因?yàn)橐莆划吘褂邢拗,超過(guò)32位或64位就不能直接實(shí)現(xiàn)了,只能自己對(duì)多寄存器移位同時(shí)控制好數(shù)據(jù)的同步。而用尋址,可以很方便的擴(kuò)展這個(gè)功能。我們?cè)O(shè)計(jì)一個(gè)算法時(shí),除了要解決當(dāng)前問(wèn)題外,還要考慮這個(gè)算法能不能重用,如何做到重用,這樣在類似的項(xiàng)目中可以方便套用它,會(huì)提高不少效率。
  當(dāng)然這種簡(jiǎn)單的東西實(shí)際工作是用不到的,我只是需要了解對(duì)方的編程思想以及對(duì)PLC的理解。雖然最初PLC是為了代替繼電接觸器而生,但時(shí)至今日,這東西已經(jīng)有了突飛猛進(jìn)的發(fā)展,如果我們?cè)诠ぷ鲀扇旰螅是只會(huì)用這么簡(jiǎn)單的方式解決問(wèn)題,那就有點(diǎn)說(shuō)不過(guò)去了。這么簡(jiǎn)單的問(wèn)題,都要浪費(fèi)上很多時(shí)間,工作效率大打折扣,結(jié)果還要死不少腦細(xì)胞。有人做這題用一個(gè)多小時(shí)最后做不對(duì),有人兩分鐘就直接寫完程序了,那一個(gè)系統(tǒng)上萬(wàn)步的程序,時(shí)間上就要差多少,更不要提質(zhì)量了。
  有人說(shuō),怕這樣用PLC,會(huì)不穩(wěn)定。我說(shuō),如果擔(dān)心這個(gè),那就不要用PLC了,既然它提供了這些功能,就應(yīng)該是通過(guò)了測(cè)試的。雖然我們要把有可能出現(xiàn)的問(wèn)題都考慮周全,以保證系統(tǒng)的可靠性,但天災(zāi)人禍的事任誰(shuí)也沒(méi)有辦法的。如果真發(fā)生這樣的問(wèn)題,你可以直接給PLC廠家發(fā)郵件報(bào)告這個(gè)BUG。
  其實(shí)如果我們單片機(jī)或匯編了解得多一點(diǎn),會(huì)發(fā)現(xiàn)PLC很容易,指令系統(tǒng)都差不多,基本上就照著單片機(jī)的指令來(lái)的,當(dāng)然有的提供了一些更高級(jí)一些的功能,如通信類指令,數(shù)據(jù)表格類指令等,另外如ST語(yǔ)言還可以操作數(shù)組,甚至有的PLCAB能搞出類似對(duì)象的數(shù)據(jù)結(jié)構(gòu),但編程思想基本上還是一致的;蛟S因?yàn)槲沂菍W(xué)機(jī)械的,而當(dāng)初又專門學(xué)過(guò)匯編,所以在使用PLC時(shí)才喜歡套用匯編的方式吧,雖然大學(xué)也開(kāi)過(guò)兩門PLC課程。
  發(fā)發(fā)牢騷,希望能提醒剛進(jìn)入工控這個(gè)行業(yè)的同行們,多一些創(chuàng)新思維,眼界要放寬,多接觸些新東西,不要書(shū)上說(shuō)老師說(shuō)網(wǎng)上說(shuō),自己想出來(lái)的,未必就比別人差,如果所有的人都是書(shū)上說(shuō)老師說(shuō)網(wǎng)上說(shuō)的,那人類不要發(fā)展了,早點(diǎn)刨坑把自己埋了吧。
————————————————分割線—————  —————————分割線—  _____——————————————
見(jiàn)到這個(gè)題目后我也做了一遍,用三菱fx2n系列,第一次用的是定時(shí)器控制下一個(gè)燈,當(dāng)下一個(gè)燈亮起的時(shí)候,同時(shí)使用復(fù)位指令對(duì)前一個(gè)燈置0.寫的程序見(jiàn)圖。(沒(méi)有寫完8個(gè)燈,只寫了4個(gè)燈)。調(diào)試后沒(méi)有問(wèn)題。
第二次是按照上面那個(gè)面試官的思路寫的。問(wèn)題就出現(xiàn)了,只能運(yùn)行到第三個(gè)燈,后面的不能運(yùn)行。(附圖是我更改了幾次的程序,開(kāi)始的時(shí)候還使用了觸電比較指令也一樣沒(méi)有到達(dá)預(yù)期目的)
現(xiàn)在想請(qǐng)教一下,假如我按照面試官的思路(即使用四則運(yùn)算的乘法mul)該如何修改我的這段程序?謝謝!
& h7 L/ }/ e0 Y4 c
作者: 還做讀書(shū)狼    時(shí)間: 2012-2-6 19:51
漏了一個(gè)圖了,現(xiàn)在這個(gè)圖是使用四則運(yùn)算的程序。上面兩個(gè)圖的順序反了,不好意思!
作者: 留在未來(lái)    時(shí)間: 2012-2-6 22:34
這個(gè)東西要看具體情況,比如只是控制幾個(gè)燈,那用PLC內(nèi)部計(jì)時(shí)器加繼電器控制是最簡(jiǎn)單的,干嘛用移位的那么復(fù)雜。; u* j3 |' g! K! r, y' a! I
不過(guò)如果是控制成百上千個(gè)燈,那這個(gè)時(shí)候用移位的方法就顯得很簡(jiǎn)單了,不用寫上成百上千行程序。
作者: luyupei    時(shí)間: 2012-2-7 13:19
沒(méi)看太懂,不過(guò)那些東西都很有用。有時(shí)候感覺(jué)邏輯關(guān)系不知道怎么做,如果對(duì)這些東西熟悉的話就簡(jiǎn)單了。上面的程序用VC很好實(shí)現(xiàn),而且調(diào)理清晰。
作者: 往事隨風(fēng)LEO    時(shí)間: 2012-2-7 21:01
{:soso_e113:}管他捏!只要實(shí)現(xiàn)功能就來(lái)賽!不管白貓還是黑貓能捉老鼠就是好貓,關(guān)鍵問(wèn)題是把問(wèn)題攻克!
作者: 爽爽01    時(shí)間: 2012-2-7 22:27
大哥 移位在大學(xué)課本里根本被忽略了,一般都是用功能指令來(lái)實(shí)現(xiàn)。比如這里的mov指令。所以用移位來(lái)實(shí)現(xiàn)的人很少哦。當(dāng)熱方法不是唯一的只有通過(guò)仿真后才能實(shí)踐出最后的方法。
作者: tbygr    時(shí)間: 2012-2-7 22:29
雖然看不懂,還學(xué)習(xí)下,以后備用
作者: apay    時(shí)間: 2012-2-7 22:40
頭大中,看都不敢看,
作者: 還做讀書(shū)狼    時(shí)間: 2012-2-8 21:10
apay 發(fā)表于 2012-2-7 22:40
1 p" g# w( ~! I+ W5 ~5 o0 z頭大中,看都不敢看,

* I3 l2 X; i# d9 L; N1 x那段文字 看的確實(shí)頭疼!
作者: 北京機(jī)床維修    時(shí)間: 2012-2-13 21:53
寫的不錯(cuò),其實(shí)我們上學(xué)學(xué)的是什么?知識(shí)的運(yùn)用!學(xué)到的知識(shí)要舉一反三,觸類旁通。不過(guò)現(xiàn)在的課本在有些方面來(lái)說(shuō)真的不能說(shuō)好,講了一大堆沒(méi)用的話,真正有用的就那么一點(diǎn)。重點(diǎn)的東西還是要自己去總結(jié)思考。如果一個(gè)人想快速的學(xué)習(xí)掌握某技術(shù)要領(lǐng),那看書(shū)會(huì)讓他頭大的很。因?yàn)樗床坏揭粋(gè)總表,F(xiàn)在的書(shū)讓我說(shuō)應(yīng)該在最前頁(yè)或是最后頁(yè)的地方加上總表,匯總一下書(shū)中所有的重點(diǎn)。如:某PLC編程手冊(cè)中詳細(xì)的說(shuō)明了每個(gè)程序的含義、結(jié)構(gòu)、使用條件、使用方法等,在最前頁(yè)把所有的程序、列表、格式匯總一下。這樣我們?cè)诳磿?shū)的時(shí)候,只要一翻書(shū)就能看到自己學(xué)到哪里了,還有哪里不明白,不會(huì)的,第一時(shí)間了解到自己的學(xué)習(xí)狀況,第一時(shí)間加深了所學(xué)知識(shí)的印象。當(dāng)然,必要的筆記還是不能少的。
作者: tomys7017    時(shí)間: 2012-2-13 23:23
謝謝分享喔滿不錯(cuò)的喔
作者: Frankdechao    時(shí)間: 2012-2-14 11:36
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: 北京機(jī)床維修    時(shí)間: 2012-2-16 17:18
還做讀書(shū)狼 發(fā)表于 2012-2-6 19:51 1 Q' R' O7 h$ H! y2 b' d; J
漏了一個(gè)圖了,現(xiàn)在這個(gè)圖是使用四則運(yùn)算的程序。上面兩個(gè)圖的順序反了,不好意思!

$ {8 S* w# V* y/ @" u我剛做的。電腦上,PLC上都點(diǎn)亮了。你看看。做的肯定還有不足,比如占空間大,程序煩索等。大家也給點(diǎn)意見(jiàn)。
( i9 W) ], r3 D+ T7 \2 w, G[attach]240479[/attach]- F4 L% \. R$ k" Z( H
[attach]240480[/attach]
+ ]6 h( b9 k9 F
作者: zhaowanneng    時(shí)間: 2012-2-17 17:24
c:\11.jpg
作者: zhaowanneng    時(shí)間: 2012-2-17 17:33
這個(gè)就是用四則運(yùn)算實(shí)現(xiàn)的,其實(shí)這明顯就是一個(gè)順序控制,用順序控制最簡(jiǎn)單,不用動(dòng)腦筋,記得學(xué)VB的時(shí)候,老師就說(shuō)過(guò),印度的軟件之所以比中國(guó)強(qiáng),就是印度追求的是大家都看得懂,而中國(guó)軟件人員追求的是只有我能看懂。順便做個(gè)說(shuō)明,[b]本人現(xiàn)居住北京通州區(qū)附近,初學(xué)電工,考取了低壓本,想求一份電工學(xué)徒的工作,QQ.1196940288 非誠(chéng)勿擾
作者: changkongceyi    時(shí)間: 2012-2-18 16:40
我還沒(méi)學(xué)位移指令呢....
作者: zhouyang    時(shí)間: 2012-2-18 16:54
如果我們能遇見(jiàn)一面就好啦!我在編成是就追尋多用應(yīng)用指令!要與眾不同     我們很對(duì)味呀  期待你更多的問(wèn)題
/ }  A8 q0 C) a$ A5 p有意和你結(jié)識(shí)朋友 13674274316  沈陽(yáng) 周楊




歡迎光臨 機(jī)械社區(qū) (http://mg7058.com/) Powered by Discuz! X3.4