陈冠希艳照门

新聞中心

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

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

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

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

本文引用地址:http://www.sncsn.tw/article/201908/403636.htm

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

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

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

1

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

老衲開發的一款工控產品中有一個異常電壓保護功能,當外部供電電壓異常時需要關斷所有輸出,當供電電壓回到正常范圍時恢復所有輸出。

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

設定供電電壓的正常范圍上下限,用ADC周期性地檢測外部供電電壓并周期性地判斷。設置判斷電壓異常的周期計時次數N,當供電電壓持續低于下限或者持續高于上限一定次數(N)的周期時,關斷當前正在導通狀態下的所有輸出。當供電電壓持續處于正常區間(N個ADC檢測周期)時,根據產品的功能,控制輸出的開通和關斷。

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

原因無他,輸出太多爾,控制太復雜爾!

1565586635995992.jpg

這款工控產品的輸出通道高達30多路,每路輸出都需要單獨控制,而且有的通道互有關聯。輸入信號則來自多路傳感器、RS485總線、zigbee。控制輸出時,主要是根據輸入信號、產品內部狀態,按照一定的開通或關斷。

輸入輸出信號繁多,控制邏輯錯綜復雜,以至于那個“想當然”的解決方案根本實現不了。

拍一拍腦袋想想吧。假設供電電壓異常時,有15路輸出處于開通狀態。經過N個檢測周期發現電壓始終異常,于是乎把這15路通通關斷。

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

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

2

傻眼了吧?不管你們傻不傻,反正我當時就傻眼了!

1565586651355442.jpg

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

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

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

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

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

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

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

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

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

3

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

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

顯然,必須讓輸出通道的恢復邏輯和平時的控制邏輯有所區隔,才能從那么繁復的控制網絡中解放出來。

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

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

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

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

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

老衲再一次被自己的佛學素養驚呆了。只有不遵從任何產品功能上的邏輯,才是最為簡潔的邏輯,更為關鍵的一點是,這種實現方案還能被應用在其它任何產品的異常電壓保護上。

誰說工程師學佛沒用來著?

1565586670807786.jpg

4

以這種近乎離奇的方式實現了異常電壓保護功能之后,一直善于內省的老衲又開始“向內尋求”,總結經驗教訓了。

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

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

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

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

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

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



關鍵詞: 優先級 邏輯

評論


相關推薦

技術專區

關閉
陈冠希艳照门 男人没能力赚钱 糖果星星消消乐下载 雅加达投注平台登陆网址 大乐透下载安装 业余可以做点什么赚钱 彩票助赢计划软件 广东十一选五开奖结果 时时彩后2稳赚博客 江苏11选5彩江 皇家国际官网电玩 河北快三技巧宝典 河北11选5开奖一定牛 埃及宝藏推币机 民间炸金花游戏送现金 北京pk赛车软件安装 足球优胜冠军