0909 【萬泉河】PLC編程煙臺方法升級:萬線圈技術(shù)
有一些小的道理本來是不明而喻的, 但是由于受眾群體理解力大不不同,所以有時(shí)候看起來很淺顯的道理也仍然需要反復(fù)闡述,才可以逐漸形成最大共識。
所以,有可能顯得有些啰嗦且沒有技術(shù)含量,那么一些先行者敬請忍一忍,慢下來等一等后來者也是你修行的一部分。
比如,技術(shù)的進(jìn)步通常不是一蹴而就的,而是需要許許多多技術(shù)細(xì)節(jié)的不斷提升和打磨,最終才能徹底實(shí)現(xiàn)。
我在很多個(gè)場合提到過,煙臺方法是一種全新的PLC程序設(shè)計(jì)思想和方法,學(xué)習(xí)的難度非常高。而現(xiàn)有的學(xué)員的經(jīng)歷也在證實(shí)這一點(diǎn)。第一批參加的學(xué)員從2018年就開始了學(xué)習(xí),到現(xiàn)在已經(jīng)接近4年,徹底實(shí)現(xiàn)了自己公司的標(biāo)準(zhǔn)化設(shè)計(jì),并且完美程度能跟我交給他們的樣板設(shè)計(jì)同樣級別的,估計(jì)不會很多。而我自己因?yàn)橐婚_始的疏忽大意, 設(shè)計(jì)中也有一點(diǎn)點(diǎn)小的缺憾,所以不能算滿分,但我在注釋中已經(jīng)詳細(xì)著名,解決方案也已經(jīng)在后面的文章中反復(fù)闡述。真要我改進(jìn)的話,所需要花費(fèi)的時(shí)間不需要超過半個(gè)小時(shí)。所以,四舍五入可以認(rèn)為無限接近滿分了。
當(dāng)然,學(xué)員們到目前為止沒有1個(gè)人就這一點(diǎn)對我發(fā)難的。 畢竟,我?guī)Ыo他們的新知識新技能繁雜豐富到眼花繚亂,夠他們學(xué)習(xí)很久了。 而他們自己可以把學(xué)習(xí)到的技能逐漸應(yīng)用到自己的設(shè)計(jì)工作中,即便達(dá)不到和我一樣的程度,也已經(jīng)終生受益了。工作效率已經(jīng)得到了極大程度的提高。
所以有一些人把我說的難學(xué)給理解成,既然難學(xué),學(xué)不會,那就索性不學(xué)。 學(xué)和不學(xué)一個(gè)樣。這樣屬于惡性誤讀。
而另一個(gè)方面, 煙臺方法本身也不是靜止不動的, 也是在持續(xù)進(jìn)步成長中。 有一些是把過去無意中使用過的技能總結(jié)歸納為理論, 而有一些則是隨著新的應(yīng)用新的工藝遇到的新的邏輯需求,而產(chǎn)生的。
比如近幾個(gè)月來, 實(shí)現(xiàn)了在國產(chǎn)小型PLC中的標(biāo)準(zhǔn)化設(shè)計(jì)方法, 僅僅依靠原有的技術(shù)理論顯然是不夠的。除了思想方式有改進(jìn),具體的實(shí)踐環(huán)節(jié),也是有一些新技術(shù)創(chuàng)新點(diǎn)。
其中,比較重要的是對雙線圈原理的解讀。寫了好多篇文章, 還做了好幾場講座。通過從原理上對PLC行業(yè)原有的雙線圈問題的解讀,另辟蹊徑, 以原本傳統(tǒng)上許多人避之不及的看起來貌似會發(fā)生雙線圈錯(cuò)誤的編程方法,反而更高效更優(yōu)雅地實(shí)現(xiàn)了某些特定邏輯功能。
這些文章和觀點(diǎn)在同行中也引起了不小的反響。 一些同行反應(yīng)大有收獲。 這么簡單的道理以前沒有深入想過,從中深受啟發(fā)。
而與此對應(yīng)的是另外一批同行,可能以前寫的好多文章涉及的技術(shù)點(diǎn)他們不怎么熟悉, 而談及雙線圈,不管懂不懂文章在說了什么,至少詞匯懂啊!入門級的概念,在學(xué)校的時(shí)候老師可能都教過的!然后萬老師竟然最基本的錯(cuò)誤都敢冒犯,可笑可笑!
然后這些人聚集越來越多,竟然還形成了一個(gè)小團(tuán)體,還組了個(gè)過百人的微信群,專門看我笑話呢!然后他們以討論學(xué)習(xí)為理由還邀請我進(jìn)群,我進(jìn)群之后就發(fā)現(xiàn)氣氛根本不對,那些人起的名字都五花八門,專門針對萬某以及雙線圈的。 然后我就跟他們的群主表示,他們不是反感我割韭菜嘛,那我就割一把。想讓我做講座,可以。除群主之外,每人繳費(fèi)10元,湊齊了以后就給他們做講座好好把雙線圈問題講講清楚。
然后這事自然就不了了之了。
然而他們那群人或自嘲, 或起哄, 給他們自己和給我起的外號都挺有意思的。 最有意思的把我搞到笑翻的是稱為∞線圈,我太喜歡了!然而很可惜, 這個(gè)按倒的8發(fā)音不方便讀,要讀“無窮大”,我說那就直接叫萬線圈好了。
萬線圈技術(shù), 萬線圈方法。 也正好貼合了萬某的名號。
既然他們的本意是嘲笑我, 那我就順勢笑納了。 但愿以后不要再有人跳出來表達(dá)反對意見,再認(rèn)為我沒有那個(gè)資格獨(dú)占這一技術(shù)方法的命名權(quán)。
那就太不講究了。
我們對雙線圈的定義,是因?yàn)椴划?dāng)?shù)囟啻问褂镁圈指令,導(dǎo)致程序功能錯(cuò)誤,所以雙線圈是錯(cuò)誤。
而如果我們能精確把握PLC程序中的線圈指令,以及許多貌似線圈的其他指令,最終雖然貌似有雙線圈錯(cuò)誤的嫌疑,然而程序功能是可以成功達(dá)到預(yù)期目的的,同一線圈可以無限次重復(fù)使用,可以80次,可以一萬次,可以無窮大次,那么我們統(tǒng)一稱之為萬線圈。
所以,程序中有雙線圈是一種錯(cuò)誤程序, 而程序中有萬線圈是一種有意為之的正確程序。
貼一下我做過的信捷PLC程序標(biāo)準(zhǔn)化架構(gòu)中的一段程序:
前面一篇文章中曾經(jīng)貼過這段代碼,有人不以為然嘲笑我這樣的平淡無奇的程序也好意思貼出來。
那么請注意看程序雙線圈檢查的結(jié)果:
這些變量都是疑似雙線圈,而實(shí)際上我們現(xiàn)在可以稱他們?yōu)槿f線圈。
最后再補(bǔ)充一點(diǎn),程序中對M211,M212,M213等的變量的使用方法, 其實(shí)是相當(dāng)于把它們當(dāng)做了FB的INOUT管腳。 信捷PLC的子程序只有CALL,沒有參數(shù),而我這里則通過萬線圈方法,不僅讓它們有了INPUT ,OUTPUT, 甚至INOUT, TEMP, STATIC都是可以實(shí)現(xiàn)的了。
當(dāng)然, 這些技能是參考了匯編語言的處理方法。曾經(jīng)反編譯某個(gè)EXE,讀取其匯編邏輯的時(shí)候,獲得的技能。