0514 【萬泉河】PLC中的M的本質(zhì)是糖果
糖果什么意思,就是吃起來比較爽,然而吃多了會上癮,會蛀牙,會導(dǎo)致肥胖,會引發(fā)糖尿病。
我寫文章宣傳PLC中使用M的壞處,勸誡同行在學(xué)習(xí)PLC編程中要學(xué)會避開使用M以及其它的程序全局變量。 這原本在我看來是非常基礎(chǔ)的原理,然而非常匪夷所思的6-7年過去了, 這一理念并沒有得到普及。反而在一些場合,仍然有不少反對的聲音。
比如有人就理直氣壯地反駁曰:既然PLC系統(tǒng)中設(shè)計了M變量,你憑啥不讓用?只要設(shè)計了就可以用。你如果有理,去讓西門子等廠家在PLC系統(tǒng)中取消M以及全局標(biāo)簽變量,才證明你說的有道理。
這個邏輯看起來很充分的樣子,其實完全不值得一駁。大家都知道吃糖果的危害呢,然而超市里面最顯眼的地方賣得更多的仍然是糖果,隨處隨手可得。 要按這種理論,國家是不是應(yīng)該強行取締各種糖果生產(chǎn)商,禁止生產(chǎn)糖果,讓小孩子們吃不到糖,就自然不會蛀牙了。 成年人老年人接觸不到那么多糖類,也就不會肥胖,不會有糖尿病了。
很顯然不是這樣嘛!
這個世界上太多存在然而禁忌的規(guī)則了。比如商場里的防火通道,平常是要緊閉不許人員出入的。假如來個醉漢, 以存在就要用為由,非要強行通過, 那最終必然被保安給架離。
再比如各停車場里的殘疾人優(yōu)先的車位,即便是空閑在那里, 正常車輛也不可以泊車。而如果有人以閑置導(dǎo)致資源浪費為由,要把自己的車停在上面,那其實就不是在關(guān)心資源 浪費,而只是其個人素質(zhì)低下了。
而我們所倡導(dǎo)的程序中不使用全局變量,掌握此技能后,可以避免因為使用M所帶來的諸多弊端,程序模塊不能復(fù)用,調(diào)試工作量大等等。我以前多篇文章中都介紹過。所以我更愿意打比方的例子是爬樓梯。
30層的高樓,有電梯但必然也仍然設(shè)計有樓梯,掌握了不使用M的技能,就相當(dāng)于拿到了電梯的鑰匙。 如果有電梯可乘坐,卻非要吭哧吭哧爬樓梯的, 眾人只能嘲笑其魯笨了。
也有人指責(zé)我管得太寬,每個人都有其自身的特長,適合自己的就是最好的,想用便用,不想用便不用,奉勸我手不要深的太長,限制別人的自由。
我要說的是,這種認(rèn)知的人讀題能力有限。 我在講建議PLC程序不要用M的道理的時候,是有隱含的前提的。前提是要寫高質(zhì)量的PLC的程序。只有能看得懂我講的道理的人, 能愿意去學(xué)習(xí)掌握技能,才能夠?qū)懗龈哔|(zhì)量的PLC程序,提高工作效率。
而看不懂的人,與我是沒有任何關(guān)系的。 我才不會關(guān)心其工作效率高低,才不會替其擔(dān)憂其爬30層樓會不會累死呢!
就好比醫(yī)生勸誡大家少吃糖, 有人非得抬杠每個人體質(zhì)不同,適合自己的飲食就是最好的。 我的身體體制和你們不一樣,我的體制就是適合吃糖, 多吃糖對我的身體就是有好處,我不會蛀牙,不會糖尿病。 醫(yī)生才不會卡住你的喉嚨不許你吃呢!身體健康是每個人自己的事, 你聽不進(jìn)道理,別人干著急有什么用!別人才不會為你的健康操心著急呢!
更有人質(zhì)問:“用M傷天害理?M做出來不是給人用的?”,我除了用吃糖和爬30層樓的例子給他們講解之外, 也暗自覺得好笑。 這樣的人心態(tài)也太不自信了。 把我當(dāng)法官了還是把我當(dāng)老師了?
我既沒有權(quán)力制定規(guī)則,也沒有權(quán)力判定對錯。 我有的只是講道理,講給聽得懂道理的人聽,萬千讀者中,哪怕只有一個人能看懂其中的道理,能有所感悟,有收獲,應(yīng)用到工作中,能有獲得利益, 那對我來說也算是善事一件。 我斷沒有要求所有人一個步調(diào),按我的道理做事的目的。
除此之外,我還發(fā)現(xiàn)有一些人對恪守言行一致的格言認(rèn)知上有一些偏差。當(dāng)然他們自己可能還沒有發(fā)現(xiàn)。我們的文化傳統(tǒng)中有一項優(yōu)良傳統(tǒng)是教育人要言行一致,即所言如所行。
然而言行一致并不意味著倒過來。 有的人自己暫時做不到程序中不用M,就要竭力辯解,不肯承認(rèn)用M的危害,以及學(xué)會不用M的技能對工作效率帶來的提升。
就好比我們現(xiàn)在倡導(dǎo)文明社會,不要隨地大小便。 然而如果你身處戈壁灘深處,方圓500KM都沒有公共廁所而你又內(nèi)急的時候,就只能隨地解決了。 然而也斷然不會有任何人有什么非議。 你自己當(dāng)然也不需要覺得羞愧。 然而如果因為自己曾經(jīng)在特定的情況下沒有做到規(guī)則,反而試圖要否定規(guī)則,修改規(guī)則以使自己真正符合言行一致的原則的話, 這種操作反而就不太值得贊賞了。
有人舉反例說系統(tǒng)有提供了脈沖信號,可以直接使用而減少不少編程工作量。 在SMART 200中是SM0.5, 在S7-1500中如果指定了MB0則M0.5代表了1HZ的脈沖,這用起來確實方便。 然而我們講用和不用M的時候,是指使用M作為中間狀態(tài)的緩存工具。 某個位置產(chǎn)生的狀態(tài)值保存到全局變量中,然后換一個地方又拿出來使用。
像SM0.5和M0.5這種,我們更應(yīng)該稱之為常量,而不是變量。 從而也更不是全局變量了。 就好比SMART 200的程序中每一行開頭都要有SM0.0,以及其它品牌會有SM800作為常ON的信號,這些都不必過慮,都不在討論的范圍內(nèi)。
對于S7-1500中需要在硬件設(shè)置中設(shè)置MB區(qū),如果不小心未設(shè)置,導(dǎo)致功能塊功能不能實現(xiàn),這是個硬傷。有人會覺得不傷大雅,自己早就習(xí)慣了每個CPU都會去設(shè)置,這完全可以。但如果你的工作只是頂層設(shè)計,具體項目是別人在做,多一個漏洞就多一個失敗可能性,從我自己來說已經(jīng)很多年不用這個M了,做項目的工程師是否設(shè)置了硬件我從來都不需要關(guān)心。 在自己的FB的小宇宙里把功能實現(xiàn)完整,盡量減少對外界的依賴,這才是真正的宇宙觀。 我上一篇關(guān)于宇宙觀的文章,其實就想表達(dá)這一點。
當(dāng)然,這對整個的不使用全局變量M的技術(shù)能力來說,關(guān)系很小。 這一點確實每個人可以有自己的喜好。 你可以保留這一點喜好,在整體系統(tǒng)學(xué)會不用M。 我也堅信,如果你做到了不用M,就會逐漸上癮,就會體驗到每一個模塊獨立完整性的妙處,會逐漸改變自己的認(rèn)知和習(xí)慣。
也有人對我的理論得不到廣泛認(rèn)可而替我擔(dān)憂,問我怎么想。 我說,這完全不需要擔(dān)憂,反而對更多的煙臺方法的學(xué)員意味著機會。
就好比哈利波特里面魔法學(xué)校的老師和學(xué)員們所掌握的魔法,面對眾多絲毫不懂魔法的麻瓜, 他們需要擔(dān)憂嗎?
如果僅僅掌握不用M和T,掌握五連鞭,都可以當(dāng)作魔法,都可以稱雄工控武林,這個武林世界的門檻是不是太低了點?所以你們知道為啥有些人對我不爽了吧!
糖果吃得爽,吃多了長蛀牙;M用得爽,用多了一輩子出差。
我的新微信號:ZHO6371995
所有同行可以加我。
我們有自動化俱樂部和群俠會純技術(shù)的微信群,每個人可以根據(jù)自己的需求,要求加入不同的群組。