<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 牛人業(yè)話 > 工程師的佛系自省,避開邏輯的陷阱

          工程師的佛系自省,避開邏輯的陷阱

          作者:驢三 時間:2019-08-12 來源:電子產(chǎn)品世界 收藏

          《請回答1988》第一集就讓我這個三十多歲的肥膩中年男哭了個稀里嘩啦,在普通而瑣碎的日常生活里,母子之間、父女之間那種似淡卻濃、連綿不絕的親情總會在不經(jīng)意間戳中為人父母/為人子女的淚點。這種感情的質(zhì)地亙千年而不變,表達(dá)的形式則歷萬古而常新。古有孟母三遷的美談,現(xiàn)有幼兒園門口的親子大戰(zhàn)。

          本文引用地址:http://www.ex-cimer.com/article/201908/403636.htm

          上班路過幼兒園門口,經(jīng)常看到娃娃和媽媽們相愛相殺的一幕。有的抱著媽媽的大腿,攤在地上撕心裂肺地哭喊,有的拽著媽媽的胳膊,上氣不接下氣地邊哭邊講條件。媽媽們的表現(xiàn)倒出奇的一致,一副雖九死而尤未悔的慨然,怒目相向,橫眉冷對。

          大多數(shù)孩子體力不濟,打不了持久戰(zhàn),于是乖乖就范,耷拉著小腦袋一步三回頭,在媽媽們志得意滿的目光中走向幼兒園。但是,在這種敵我雙方力量懸殊的戰(zhàn)局中,偶有那種意志堅定的小戰(zhàn)士,始終滿懷著敢叫日月?lián)Q新天的豪情,雖千萬人吾往矣地宣告著自己的價值主張-玩、在家玩。

          這種戰(zhàn)略相持的場面并不多見,每每目睹,不以為怪。直到有一次,我突然對堅持抵抗的小戰(zhàn)士充滿了深深的景仰之情:意志這么堅定,肯定是個干工程師的好苗子。

          1

          老衲之所以感慨萬端,自然是因為工作上遇到了難以克服的挑戰(zhàn)。在解決的過程中,屢屢感到自己意志不堅,想當(dāng)逃兵離開這迷離的火線。

          老衲開發(fā)的一款工控產(chǎn)品中有一個異常電壓保護(hù)功能,當(dāng)外部供電電壓異常時需要關(guān)斷所有輸出,當(dāng)供電電壓回到正常范圍時恢復(fù)所有輸出。

          這個功能乍看起來有些簡單,有經(jīng)驗的工程師肯定已經(jīng)在腦海里想好了解決方案:

          設(shè)定供電電壓的正常范圍上下限,用ADC周期性地檢測外部供電電壓并周期性地判斷。設(shè)置判斷電壓異常的周期計時次數(shù)N,當(dāng)供電電壓持續(xù)低于下限或者持續(xù)高于上限一定次數(shù)(N)的周期時,關(guān)斷當(dāng)前正在導(dǎo)通狀態(tài)下的所有輸出。當(dāng)供電電壓持續(xù)處于正常區(qū)間(N個ADC檢測周期)時,根據(jù)產(chǎn)品的功能,控制輸出的開通和關(guān)斷。

          悲催的老衲最初就是這么干的,但是很快,老衲就意識到這種方法蠢笨至極,根本實現(xiàn)不了異常電壓保護(hù)。

          原因無他,輸出太多爾,控制太復(fù)雜爾!

          1565586635995992.jpg

          這款工控產(chǎn)品的輸出通道高達(dá)30多路,每路輸出都需要單獨控制,而且有的通道互有關(guān)聯(lián)。輸入信號則來自多路傳感器、RS485總線、zigbee??刂戚敵鰰r,主要是根據(jù)輸入信號、產(chǎn)品內(nèi)部狀態(tài),按照一定的開通或關(guān)斷。

          輸入輸出信號繁多,控制邏輯錯綜復(fù)雜,以至于那個“想當(dāng)然”的解決方案根本實現(xiàn)不了。

          拍一拍腦袋想想吧。假設(shè)供電電壓異常時,有15路輸出處于開通狀態(tài)。經(jīng)過N個檢測周期發(fā)現(xiàn)電壓始終異常,于是乎把這15路通通關(guān)斷。

          咔咔咔,猶如抽刀砍西瓜,一刀剖去,紅瓤黑子分明儼然,那真叫一個不亦快哉!

          可是且慢,“快哉”了之后呢?現(xiàn)在供電電壓恢復(fù)正常了,您這15路通道怎么恢復(fù)之前的開通狀態(tài)?

          2

          傻眼了吧?不管你們傻不傻,反正我當(dāng)時就傻眼了!

          1565586651355442.jpg

          關(guān)斷總是容易,但是恢復(fù)太難。就好像把房子推倒容易,再建起來很難一樣。

          老衲得承認(rèn),剛開始盡管傻了眼,但是我并沒有開竅。我傻傻地為這30多路輸出定義了30多個狀態(tài)變量,“不亦快哉”之前先統(tǒng)計處于導(dǎo)通狀態(tài)的通道,“快哉”之后需要恢復(fù)時,再把處于導(dǎo)通狀態(tài)的一一恢復(fù)。

          可是,在導(dǎo)通狀態(tài)的恢復(fù)程序中,仍然需要面對30多路輸出。每一路輸出都有自己的控制邏輯,在控制邏輯里既要看輸入信號,還要看內(nèi)部狀態(tài)。而且有的輸出還比較膈應(yīng)人,它可以被好幾個輸入信號同時控制,最終處于什么狀態(tài)要看這些輸入信號之間的。就是說,不僅要看信號的當(dāng)前狀態(tài),還要看它的歷史狀態(tài)!

          從理論上來講,硬扛不是不可以。一共30多路,余生還長,鼓起勇氣一路一路來唄。程序上電運行后,將各個輸入信號的歷史狀態(tài)、先后次序都存儲下來,并實時更新。在異常電壓關(guān)斷保護(hù)之后的恢復(fù)程序子分支中,再把每一路的控制邏輯都重寫一遍。

          從實踐上來看,這種方案簡直笨的離譜。老衲花了半天功夫,弄了一路輸出之后,測試了一番,發(fā)現(xiàn)這一路也沒有恢復(fù)對。

          這路輸出有四種控制邏輯,可以通過zigbee信號控制,輸出形式是常開,通過RS485控制,則應(yīng)該是閃爍,通過一個傳感器控制,則應(yīng)該是頻率更低的閃爍,也可以通過一個本地開罐直接開通或者關(guān)斷。這四種信號的是最簡單的那種:最后出現(xiàn)的信號說了算。這里沒有恢復(fù)對,顯然是因為我先前存儲歷史狀態(tài)時,把這些信號的先后次序搞亂了,但是信號這么多,程序搞得這么亂,出錯也是理所當(dāng)然。

          剛弄了一路還沒弄對,關(guān)鍵是還有那么多路,我滴個乖乖,這豈止一個麻煩了得!

          想通了這一點之后,老衲的意志在一剎那間崩潰了。

          崩地那么猝不及防,以至于很長一段時間,我都深陷在椅子上,“關(guān)斷”了自己的大腦輸出,再也不想恢復(fù)。

          3

          魯迅先生說,這世上本沒有路,走的人多了,自然就有了路。

          在被幼兒園的小戰(zhàn)士重新鼓舞了斗志之后,老衲的“小我”在腦海里左沖右突,尋找晦暗的出路。

          顯然,必須讓輸出通道的恢復(fù)邏輯和平時的控制邏輯有所區(qū)隔,才能從那么繁復(fù)的控制網(wǎng)絡(luò)中解放出來。

          古龍說過:最高明的招數(shù)就是沒有招數(shù),以無招勝有招。金剛經(jīng)曰:菩薩無我相,無人相,無眾生相,無壽者相,方能成道。

          那么,最高明的恢復(fù)邏輯就是沒有任何邏輯,讓這三十多路輸出通道恢復(fù)時不遵從任何邏輯,不就是最為高妙的“邏輯”嗎?

          很快,我就順著佛陀的開示思路開展了下去。

          大路千萬條,最妙的是老衲這一條。我只需要在MCU的輸出控制端口上做文章,當(dāng)電壓異常時禁能MCU端口的輸出功能,電壓恢復(fù)正常時恢復(fù)MCU端口的輸出功能,就整齊劃一、簡明有力地實現(xiàn)了異常電壓下的輸出保護(hù)、正常電壓下的輸出恢復(fù)。

          管它電壓異常時處于導(dǎo)通狀態(tài)還是關(guān)斷狀態(tài),管它的控制信號狀態(tài)如何,諸信號間的如何,通通不重要。關(guān)斷保護(hù)前是導(dǎo)通狀態(tài),禁能了MCU的輸出就自動起到了輸出保護(hù)作用,恢復(fù)時也能自動恢復(fù)導(dǎo)通狀態(tài)。關(guān)斷保護(hù)前是關(guān)斷狀態(tài),禁能MCU的輸出后還是處于關(guān)斷狀態(tài),相當(dāng)于做了個“雙保險”,恢復(fù)時還是自動恢復(fù)關(guān)斷狀態(tài)!

          老衲再一次被自己的佛學(xué)素養(yǎng)驚呆了。只有不遵從任何產(chǎn)品功能上的邏輯,才是最為簡潔的邏輯,更為關(guān)鍵的一點是,這種實現(xiàn)方案還能被應(yīng)用在其它任何產(chǎn)品的異常電壓保護(hù)上。

          誰說工程師學(xué)佛沒用來著?

          1565586670807786.jpg

          4

          以這種近乎離奇的方式實現(xiàn)了異常電壓保護(hù)功能之后,一直善于內(nèi)省的老衲又開始“向內(nèi)尋求”,總結(jié)經(jīng)驗教訓(xùn)了。

          在技術(shù)問題上,首先還是要克服畏難心理,把畏戰(zhàn)怯戰(zhàn)情緒盡量壓制住。靠動腦袋解決的事兒,必須先鼓足了心勁,堅定意志,好好地把腦袋磨尖,才能在技術(shù)上深入地向下鉆。

          其次,人的思路總是有自己的局限性。就像老衲在這里把思路局限在產(chǎn)品的功能邏輯上一樣,像是蒙了眼的驢一樣,來回地兜圈子。殊不知,跳出這局限,還廣有一番洞天。

          說到底,還是破除“執(zhí)著”。真正的高手,解決問題時從來不局限在兵器上,刀槍劍戟斧鉞鉤叉,哪個趁手用哪個。也不局限在一招一式上,縱橫捭闔如行云流水。只靠三板斧的笨功夫,在工程師這條道路上只會越走越窄。

          思路上盡量開闊,不要粘滯在一隅。在這上面,我們還是要取法自然,多看看荷塘里盛開的荷花和蓮葉,多看看掛在天邊的月亮。仔細(xì)體會體會這兩句明言:猶如蓮花不著水,亦如日月不住空!

          水珠在蓮葉上滾來滾去,絲毫也不粘滯。彎彎的月亮掛在天邊,但是我們能明顯地體會到它并沒有“住”在虛空里。

          這對我們工程師,不正是很好的啟發(fā)嗎?多說無益,望諸君善思之!



          關(guān)鍵詞: 優(yōu)先級 邏輯

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();