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