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

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2012-2-6 19:50:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近在網(wǎng)上搜索到了一道plc面試題,我先把作者的原話搬上來:
' q+ m/ G2 S5 ?
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í)間里,面試過不知道多少個(gè)人,情況大致是這樣:
  70%的人用各種點(diǎn)的串并聯(lián)加定時(shí)器來搭,結(jié)果仍然是做不出來;
  約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ì)沒有循環(huán)移位指令,提醒一下,再差的PLC也會(huì)支持四則運(yùn)算,自動(dòng)化專業(yè)總得學(xué)過單片機(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é)果就是這樣,我還沒要求必須完整給出程序,思路正確就行,當(dāng)然能直接給出程序最好。
  而我最期待的,是采用循環(huán)加尋址操作,因?yàn)橐莆划吘褂邢拗,超過32位或64位就不能直接實(shí)現(xiàn)了,只能自己對(duì)多寄存器移位同時(shí)控制好數(shù)據(jù)的同步。而用尋址,可以很方便的擴(kuò)展這個(gè)功能。我們?cè)O(shè)計(jì)一個(gè)算法時(shí),除了要解決當(dāng)前問題外,還要考慮這個(gè)算法能不能重用,如何做到重用,這樣在類似的項(xiàng)目中可以方便套用它,會(huì)提高不少效率。
  當(dāng)然這種簡(jiǎn)單的東西實(shí)際工作是用不到的,我只是需要了解對(duì)方的編程思想以及對(duì)PLC的理解。雖然最初PLC是為了代替繼電接觸器而生,但時(shí)至今日,這東西已經(jīng)有了突飛猛進(jìn)的發(fā)展,如果我們?cè)诠ぷ鲀扇旰,還是只會(huì)用這么簡(jiǎn)單的方式解決問題,那就有點(diǎn)說不過去了。這么簡(jiǎn)單的問題,都要浪費(fèi)上很多時(shí)間,工作效率大打折扣,結(jié)果還要死不少腦細(xì)胞。有人做這題用一個(gè)多小時(shí)最后做不對(duì),有人兩分鐘就直接寫完程序了,那一個(gè)系統(tǒng)上萬步的程序,時(shí)間上就要差多少,更不要提質(zhì)量了。
  有人說,怕這樣用PLC,會(huì)不穩(wěn)定。我說,如果擔(dān)心這個(gè),那就不要用PLC了,既然它提供了這些功能,就應(yīng)該是通過了測(cè)試的。雖然我們要把有可能出現(xiàn)的問題都考慮周全,以保證系統(tǒng)的可靠性,但天災(zāi)人禍的事任誰也沒有辦法的。如果真發(fā)生這樣的問題,你可以直接給PLC廠家發(fā)郵件報(bào)告這個(gè)BUG。
  其實(shí)如果我們單片機(jī)或匯編了解得多一點(diǎn),會(huì)發(fā)現(xiàn)PLC很容易,指令系統(tǒng)都差不多,基本上就照著單片機(jī)的指令來的,當(dāng)然有的提供了一些更高級(jí)一些的功能,如通信類指令,數(shù)據(jù)表格類指令等,另外如ST語(yǔ)言還可以操作數(shù)組,甚至有的PLCAB能搞出類似對(duì)象的數(shù)據(jù)結(jié)構(gòu),但編程思想基本上還是一致的;蛟S因?yàn)槲沂菍W(xué)機(jī)械的,而當(dāng)初又專門學(xué)過匯編,所以在使用PLC時(shí)才喜歡套用匯編的方式吧,雖然大學(xué)也開過兩門PLC課程。
  發(fā)發(fā)牢騷,希望能提醒剛進(jìn)入工控這個(gè)行業(yè)的同行們,多一些創(chuàng)新思維,眼界要放寬,多接觸些新東西,不要書上說老師說網(wǎng)上說,自己想出來的,未必就比別人差,如果所有的人都是書上說老師說網(wǎng)上說的,那人類不要發(fā)展了,早點(diǎn)刨坑把自己埋了吧。
————————————————分割線—————  —————————分割線—  _____——————————————
見到這個(gè)題目后我也做了一遍,用三菱fx2n系列,第一次用的是定時(shí)器控制下一個(gè)燈,當(dāng)下一個(gè)燈亮起的時(shí)候,同時(shí)使用復(fù)位指令對(duì)前一個(gè)燈置0.寫的程序見圖。(沒有寫完8個(gè)燈,只寫了4個(gè)燈)。調(diào)試后沒有問題。
第二次是按照上面那個(gè)面試官的思路寫的。問題就出現(xiàn)了,只能運(yùn)行到第三個(gè)燈,后面的不能運(yùn)行。(附圖是我更改了幾次的程序,開始的時(shí)候還使用了觸電比較指令也一樣沒有到達(dá)預(yù)期目的)
現(xiàn)在想請(qǐng)教一下,假如我按照面試官的思路(即使用四則運(yùn)算的乘法mul)該如何修改我的這段程序?謝謝!. |; x. Y4 Z3 h8 u& x, N4 I

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號(hào)?注冊(cè)會(huì)員

x
回復(fù)

使用道具 舉報(bào)

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

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號(hào)?注冊(cè)會(huì)員

x

點(diǎn)評(píng)

是啊,我對(duì)于這個(gè)程序也是沒有點(diǎn)亮……并且更改了幾次也沒有成功。不知道你有沒有什么好的建議呢?望不吝賜教!謝謝  發(fā)表于 2012-2-16 16:46
聲明,我也是菜鳥,但也正在學(xué)這個(gè)。你的這個(gè)圖我測(cè)了一下,一個(gè)燈也沒點(diǎn)亮,看了一下程序,我感覺:1:第一行的D=50沒有意義,后面不如直接在T0上賦值。2,你的第二行程序連續(xù)給V0一個(gè)常數(shù)2是不可變的,也就是說你  發(fā)表于 2012-2-16 15:52
3#
發(fā)表于 2012-2-6 22:34:09 | 只看該作者
這個(gè)東西要看具體情況,比如只是控制幾個(gè)燈,那用PLC內(nèi)部計(jì)時(shí)器加繼電器控制是最簡(jiǎn)單的,干嘛用移位的那么復(fù)雜。# v) n, i: y" D$ t
不過如果是控制成百上千個(gè)燈,那這個(gè)時(shí)候用移位的方法就顯得很簡(jiǎn)單了,不用寫上成百上千行程序。

點(diǎn)評(píng)

嗯,應(yīng)用的時(shí)候確實(shí)是這樣的,但是在我們學(xué)習(xí)過程中,多加幾種方法又何嘗不好呢?呵呵  發(fā)表于 2012-2-6 22:50
4#
發(fā)表于 2012-2-7 13:19:09 | 只看該作者
沒看太懂,不過那些東西都很有用。有時(shí)候感覺邏輯關(guān)系不知道怎么做,如果對(duì)這些東西熟悉的話就簡(jiǎn)單了。上面的程序用VC很好實(shí)現(xiàn),而且調(diào)理清晰。
5#
發(fā)表于 2012-2-7 21:01:39 | 只看該作者
{:soso_e113:}管他捏!只要實(shí)現(xiàn)功能就來賽!不管白貓還是黑貓能捉老鼠就是好貓,關(guān)鍵問題是把問題攻克!
6#
發(fā)表于 2012-2-7 22:27:18 | 只看該作者
大哥 移位在大學(xué)課本里根本被忽略了,一般都是用功能指令來實(shí)現(xiàn)。比如這里的mov指令。所以用移位來實(shí)現(xiàn)的人很少哦。當(dāng)熱方法不是唯一的只有通過仿真后才能實(shí)踐出最后的方法。

點(diǎn)評(píng)

fx2n的功能指令有9個(gè)模塊:程序流指令、循環(huán)與移位、傳送與比較、運(yùn)算與邏輯、高速、數(shù)據(jù)、方便指令、還有2個(gè)I/O的  發(fā)表于 2012-2-8 20:40
7#
發(fā)表于 2012-2-7 22:29:55 | 只看該作者
雖然看不懂,還學(xué)習(xí)下,以后備用
8#
發(fā)表于 2012-2-7 22:40:49 | 只看該作者
頭大中,看都不敢看,
9#
 樓主| 發(fā)表于 2012-2-8 21:10:25 | 只看該作者
apay 發(fā)表于 2012-2-7 22:40
7 h) D# [) l0 C' C$ M2 ~頭大中,看都不敢看,

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

點(diǎn)評(píng)

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

本版積分規(guī)則

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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