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

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 9532|回復(fù): 16
打印 上一主題 下一主題

求助,一道plc面試題的困惑

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2012-2-6 19:50:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在網(wǎng)上搜索到了一道plc面試題,我先把作者的原話搬上來:% ~8 j$ }- K" E" _! n8 r( {% q
PLC編程-關(guān)于一道簡單面試題
20110425
  我給出的筆試題中,其中有一道是要求當(dāng)I0.01時,Q7.0-Q7.7這八個燈以5s間隔依次點亮,每個亮5s,走馬燈式循環(huán),直到I0.00時停止。
  結(jié)果很是失望,一年半時間里,面試過不知道多少個人,情況大致是這樣:
  70%的人用各種點的串并聯(lián)加定時器來搭,結(jié)果仍然是做不出來;
  約10%的人用上面的辦法做成功了;
  約10%的人用計數(shù)器(C)對5S脈沖計數(shù),之后如下方式輸出:
  LD C==0 OUT Q7.0;...........................................LD C==7 OUT Q7.7
  之后C==8時清零,重復(fù)以上動作。這樣也算實現(xiàn)了。
  約10%的人用移位的方法實現(xiàn),這才是我期待的答案。討論答案的時候有人提及某些小型PLC可能會沒有循環(huán)移位指令,提醒一下,再差的PLC也會支持四則運算,自動化專業(yè)總得學(xué)過單片機(jī)的吧,那怎么想不到整數(shù)乘2就相當(dāng)于左移,除2就相當(dāng)于右移呢?再利用上進(jìn)位寄存器或余數(shù)寄存器判斷復(fù)位不就可以了,就算不知道進(jìn)位寄存器或余數(shù)寄存器,那么可以在這個數(shù)為H80時不做乘法而為其賦H01,或為H01時不做除法而為其賦H80就可以了。
  結(jié)果就是這樣,我還沒要求必須完整給出程序,思路正確就行,當(dāng)然能直接給出程序最好。
  而我最期待的,是采用循環(huán)加尋址操作,因為移位畢竟有限制,超過32位或64位就不能直接實現(xiàn)了,只能自己對多寄存器移位同時控制好數(shù)據(jù)的同步。而用尋址,可以很方便的擴(kuò)展這個功能。我們設(shè)計一個算法時,除了要解決當(dāng)前問題外,還要考慮這個算法能不能重用,如何做到重用,這樣在類似的項目中可以方便套用它,會提高不少效率。
  當(dāng)然這種簡單的東西實際工作是用不到的,我只是需要了解對方的編程思想以及對PLC的理解。雖然最初PLC是為了代替繼電接觸器而生,但時至今日,這東西已經(jīng)有了突飛猛進(jìn)的發(fā)展,如果我們在工作兩三年后,還是只會用這么簡單的方式解決問題,那就有點說不過去了。這么簡單的問題,都要浪費上很多時間,工作效率大打折扣,結(jié)果還要死不少腦細(xì)胞。有人做這題用一個多小時最后做不對,有人兩分鐘就直接寫完程序了,那一個系統(tǒng)上萬步的程序,時間上就要差多少,更不要提質(zhì)量了。
  有人說,怕這樣用PLC,會不穩(wěn)定。我說,如果擔(dān)心這個,那就不要用PLC了,既然它提供了這些功能,就應(yīng)該是通過了測試的。雖然我們要把有可能出現(xiàn)的問題都考慮周全,以保證系統(tǒng)的可靠性,但天災(zāi)人禍的事任誰也沒有辦法的。如果真發(fā)生這樣的問題,你可以直接給PLC廠家發(fā)郵件報告這個BUG
  其實如果我們單片機(jī)或匯編了解得多一點,會發(fā)現(xiàn)PLC很容易,指令系統(tǒng)都差不多,基本上就照著單片機(jī)的指令來的,當(dāng)然有的提供了一些更高級一些的功能,如通信類指令,數(shù)據(jù)表格類指令等,另外如ST語言還可以操作數(shù)組,甚至有的PLCAB能搞出類似對象的數(shù)據(jù)結(jié)構(gòu),但編程思想基本上還是一致的。或許因為我是學(xué)機(jī)械的,而當(dāng)初又專門學(xué)過匯編,所以在使用PLC時才喜歡套用匯編的方式吧,雖然大學(xué)也開過兩門PLC課程。
  發(fā)發(fā)牢騷,希望能提醒剛進(jìn)入工控這個行業(yè)的同行們,多一些創(chuàng)新思維,眼界要放寬,多接觸些新東西,不要書上說老師說網(wǎng)上說,自己想出來的,未必就比別人差,如果所有的人都是書上說老師說網(wǎng)上說的,那人類不要發(fā)展了,早點刨坑把自己埋了吧。
————————————————分割線—————  —————————分割線—  _____——————————————
見到這個題目后我也做了一遍,用三菱fx2n系列,第一次用的是定時器控制下一個燈,當(dāng)下一個燈亮起的時候,同時使用復(fù)位指令對前一個燈置0.寫的程序見圖。(沒有寫完8個燈,只寫了4個燈)。調(diào)試后沒有問題。
第二次是按照上面那個面試官的思路寫的。問題就出現(xiàn)了,只能運行到第三個燈,后面的不能運行。(附圖是我更改了幾次的程序,開始的時候還使用了觸電比較指令也一樣沒有到達(dá)預(yù)期目的)
現(xiàn)在想請教一下,假如我按照面試官的思路(即使用四則運算的乘法mul)該如何修改我的這段程序?謝謝!  [. G: Y9 O, Z% R6 _( }0 @

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x
回復(fù)

使用道具 舉報

2#
 樓主| 發(fā)表于 2012-2-6 19:51:56 | 只看該作者
漏了一個圖了,現(xiàn)在這個圖是使用四則運算的程序。上面兩個圖的順序反了,不好意思!

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x

點評

是啊,我對于這個程序也是沒有點亮……并且更改了幾次也沒有成功。不知道你有沒有什么好的建議呢?望不吝賜教!謝謝  發(fā)表于 2012-2-16 16:46
聲明,我也是菜鳥,但也正在學(xué)這個。你的這個圖我測了一下,一個燈也沒點亮,看了一下程序,我感覺:1:第一行的D=50沒有意義,后面不如直接在T0上賦值。2,你的第二行程序連續(xù)給V0一個常數(shù)2是不可變的,也就是說你  發(fā)表于 2012-2-16 15:52
回復(fù) 支持 反對

使用道具 舉報

3#
發(fā)表于 2012-2-6 22:34:09 | 只看該作者
這個東西要看具體情況,比如只是控制幾個燈,那用PLC內(nèi)部計時器加繼電器控制是最簡單的,干嘛用移位的那么復(fù)雜。
3 @/ o+ \( x8 U不過如果是控制成百上千個燈,那這個時候用移位的方法就顯得很簡單了,不用寫上成百上千行程序。

點評

嗯,應(yīng)用的時候確實是這樣的,但是在我們學(xué)習(xí)過程中,多加幾種方法又何嘗不好呢?呵呵  發(fā)表于 2012-2-6 22:50
回復(fù) 支持 反對

使用道具 舉報

4#
發(fā)表于 2012-2-7 13:19:09 | 只看該作者
沒看太懂,不過那些東西都很有用。有時候感覺邏輯關(guān)系不知道怎么做,如果對這些東西熟悉的話就簡單了。上面的程序用VC很好實現(xiàn),而且調(diào)理清晰。
回復(fù) 支持 反對

使用道具 舉報

5#
發(fā)表于 2012-2-7 21:01:39 | 只看該作者
{:soso_e113:}管他捏!只要實現(xiàn)功能就來賽!不管白貓還是黑貓能捉老鼠就是好貓,關(guān)鍵問題是把問題攻克!
回復(fù) 支持 反對

使用道具 舉報

6#
發(fā)表于 2012-2-7 22:27:18 | 只看該作者
大哥 移位在大學(xué)課本里根本被忽略了,一般都是用功能指令來實現(xiàn)。比如這里的mov指令。所以用移位來實現(xiàn)的人很少哦。當(dāng)熱方法不是唯一的只有通過仿真后才能實踐出最后的方法。

點評

fx2n的功能指令有9個模塊:程序流指令、循環(huán)與移位、傳送與比較、運算與邏輯、高速、數(shù)據(jù)、方便指令、還有2個I/O的  發(fā)表于 2012-2-8 20:40
回復(fù) 支持 反對

使用道具 舉報

7#
發(fā)表于 2012-2-7 22:29:55 | 只看該作者
雖然看不懂,還學(xué)習(xí)下,以后備用
回復(fù) 支持 反對

使用道具 舉報

8#
發(fā)表于 2012-2-7 22:40:49 | 只看該作者
頭大中,看都不敢看,
回復(fù) 支持 反對

使用道具 舉報

9#
 樓主| 發(fā)表于 2012-2-8 21:10:25 | 只看該作者
apay 發(fā)表于 2012-2-7 22:40
+ n9 j+ w$ g3 P' U頭大中,看都不敢看,

1 X( T# _; S) E/ y# C' e$ {; s那段文字 看的確實頭疼!
回復(fù) 支持 反對

使用道具 舉報

10#
發(fā)表于 2012-2-13 21:53:02 | 只看該作者
寫的不錯,其實我們上學(xué)學(xué)的是什么?知識的運用!學(xué)到的知識要舉一反三,觸類旁通。不過現(xiàn)在的課本在有些方面來說真的不能說好,講了一大堆沒用的話,真正有用的就那么一點。重點的東西還是要自己去總結(jié)思考。如果一個人想快速的學(xué)習(xí)掌握某技術(shù)要領(lǐng),那看書會讓他頭大的很。因為他看不到一個總表。現(xiàn)在的書讓我說應(yīng)該在最前頁或是最后頁的地方加上總表,匯總一下書中所有的重點。如:某PLC編程手冊中詳細(xì)的說明了每個程序的含義、結(jié)構(gòu)、使用條件、使用方法等,在最前頁把所有的程序、列表、格式匯總一下。這樣我們在看書的時候,只要一翻書就能看到自己學(xué)到哪里了,還有哪里不明白,不會的,第一時間了解到自己的學(xué)習(xí)狀況,第一時間加深了所學(xué)知識的印象。當(dāng)然,必要的筆記還是不能少的。

點評

你說的很對!能不能回答我的那個疑問呢?就是如何用四則運算中的mul去處理呢?煩勞了!謝謝  發(fā)表于 2012-2-14 09:42
回復(fù) 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

小黑屋|手機(jī)版|Archiver|機(jī)械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2024-11-20 13:26 , Processed in 0.056827 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表