【萬(wàn)泉河】為什么PLC程序中不要用M和T,為什么要推廣PLC編程標(biāo)準(zhǔn)化?
這倆問(wèn)題我今天嘗試用一篇文章講清楚。
先說(shuō)一個(gè)結(jié)論, 前一個(gè)問(wèn)題是后一個(gè)問(wèn)題的基礎(chǔ),沒解決前一個(gè)問(wèn)題,就不可能實(shí)現(xiàn)后一個(gè)問(wèn)題。
即要搞PLC編程標(biāo)準(zhǔn)化, 一個(gè)重要的前提是程序中不要用M和T。 實(shí)現(xiàn)邏輯的時(shí)候,不要使用全局變量的M和T來(lái)作為其中的狀態(tài)傳遞和功能實(shí)現(xiàn)。
M和T的本質(zhì)是全局變量,這是德系PLC中常用的代號(hào),那么換到日系, 會(huì)是D,H等等,以及純標(biāo)簽編程的,就是人為定義的字符。 都是全局變量,都在要避免的范圍內(nèi)。
如果程序中用了M和T ,那么這個(gè)程序就只能用于當(dāng)下這個(gè)項(xiàng)目,當(dāng)下這個(gè)PLC模塊私有,就無(wú)法重復(fù)使用到以后的項(xiàng)目中,以后的項(xiàng)目中哪怕功能和這里一模一樣, 你也不能直接使用,而是至少要做一些變量的沖突審查。然后3個(gè)4個(gè)…..100個(gè)項(xiàng)目, 只要需要你重新做程序,而不是直接拿一套現(xiàn)成的程序直接下載就是用的項(xiàng)目,都需要審查,調(diào)試,都需要你細(xì)心不要遺忘。 只要遺忘了就要你好看,就會(huì)讓你吃盡苦頭。
所以,這兩個(gè)問(wèn)題的答案是同一個(gè),即:痛點(diǎn)。
因?yàn)槭褂弥懈杏X到痛了, 不舒服了,所以就要想辦法找到避免痛的方法,而不是一輩子這么忍著,即便痛點(diǎn)苦點(diǎn),也這么一直忍下去。
講一個(gè)親身經(jīng)歷的故事。
大約3-4年前,我一直給做顧問(wèn)的公司,一個(gè)工程師辭職了,然后新的工程師還沒招上來(lái),他曾經(jīng)干過(guò)的項(xiàng)目,已經(jīng)交付運(yùn)行了1-2年的設(shè)備,出問(wèn)題了。客戶反映某一部分功能不好用,自動(dòng)運(yùn)行時(shí)設(shè)備亂跳。
這個(gè)項(xiàng)目,這個(gè)類型的設(shè)備工藝 ,是他們公司的傳統(tǒng),其中的主要邏輯, 是我在N年前幫他們做了一個(gè)項(xiàng)目后的樣板,后來(lái)的十幾年,他們就一直使用我那套樣板改過(guò)來(lái)改過(guò)去的用,已經(jīng)用到了上百套設(shè)備上面了,所以工程師的能力絕對(duì)不會(huì)有問(wèn)題,不至于做爛。
因?yàn)槿耸志o張, 老板就求我?guī)兔ε芤惶耍?xiàng)目在天津郊縣,然后我就買了機(jī)票直奔天津,到了機(jī)場(chǎng)直接租了個(gè)車,開過(guò)去了。
到了現(xiàn)場(chǎng),了解了一下具體的功能,故障現(xiàn)象,又問(wèn)下主事的設(shè)備主管, 這個(gè)功能以前有沒有用過(guò),是否好用?主管回答設(shè)備驗(yàn)收后一直在用其他的模式,唯獨(dú)這個(gè)功能從來(lái)沒用過(guò),這是最近生產(chǎn)計(jì)劃改變,才需要用到,然后用了就發(fā)現(xiàn)不能用。
然后我就問(wèn),全工在當(dāng)時(shí)調(diào)試的時(shí)候, 這部分功能有沒有驗(yàn)證過(guò)?答:好像沒有。
然后我就明白了。因?yàn)檫@部分功能不是主要的功能,就有可能調(diào)試時(shí)沒有注意到里面的變量使用,留下了bug。
打開程序, 找到相關(guān)的程序塊,順著邏輯捋了一下,再查一下變量的交叉引用,很快就找到了一個(gè)使用沖突的M變量。改了一下,再讓客戶開機(jī)驗(yàn)證, 立馬好了。
前后不過(guò)半小時(shí)。
然而天色已晚,工廠還在遠(yuǎn)郊區(qū),客戶給我安排了宿舍, 讓我住了一晚,第二天買了機(jī)票回家了。
花費(fèi)兩天時(shí)間,往返機(jī)票費(fèi)租車費(fèi)近2000元, 就解決了一個(gè)M點(diǎn)的疏漏問(wèn)題。什么叫痛?這就叫痛。
前面的工程師為什么離職?常年出差,常年除了干工程項(xiàng)目,其余的時(shí)間就是天南海北沒完沒了處理這些類似的問(wèn)題。 基本上來(lái)說(shuō),一年當(dāng)中,就很少有老老實(shí)實(shí)呆在家里朝九晚五上班的時(shí)間。因?yàn)楣镜倪\(yùn)轉(zhuǎn)離不了你, 所以也不能給你晉升的機(jī)會(huì),所以就只能十幾年幾十年如一日的無(wú)限重復(fù)這樣的工作。
換誰(shuí)誰(shuí)不痛? 如果還不能理解其中痛點(diǎn)的,請(qǐng)點(diǎn)擊窗口右上角的X,請(qǐng)退出不要看后面的了,后面的與你更無(wú)關(guān),更看不懂。
有人會(huì)質(zhì)疑說(shuō),這不就是一個(gè)粗心的問(wèn)題嗎,只要小心一點(diǎn),仔細(xì)一點(diǎn),現(xiàn)場(chǎng)調(diào)試的時(shí)候別偷懶每一個(gè)功能都顧及到,都測(cè)試到,就不會(huì)出這樣的問(wèn)題了。
我只能說(shuō),這樣的想法太幼稚了。客戶生產(chǎn)系統(tǒng)一旦有可能運(yùn)行,就會(huì)全力保障生產(chǎn),就沒有機(jī)會(huì)配合你做全方位調(diào)試。如果要調(diào)試輔助功能?等條件吧, 十天半個(gè)月的,生產(chǎn)有了條件,再給你機(jī)會(huì)試。然后怎么辦,項(xiàng)目正常的調(diào)試也就十天, 你在哪兒再干等10天等條件?像我去天津處理的這個(gè)功能,客戶放了快兩年才用得到,才發(fā)現(xiàn)。 你猜他們會(huì)給你機(jī)會(huì)?
完全細(xì)心的人有沒有?有。 這位工程師的主管領(lǐng)導(dǎo),我的徒弟。 那就是個(gè)非常極度細(xì)心的人,比我要細(xì)心100倍。他做項(xiàng)目的時(shí)候, 每個(gè)項(xiàng)目,每個(gè)點(diǎn)位,他都要重復(fù)4-5遍的審核,校對(duì)。 多少次不無(wú)得意的跟我吹噓,他干過(guò)的項(xiàng)目絕對(duì)穩(wěn)定可靠,很少有離開后再次去第二次的。 贏得了客戶極大的信任。
然而這其中的代價(jià)呢,他媳婦都跟我親自抱怨, 為了做項(xiàng)目,他十幾年每天都是熬夜到后半夜1-2點(diǎn)。年紀(jì)比我還小幾歲,然而十多年前就早就滿頭白發(fā)了。
這苦不苦,痛不痛?
如果還沒有理解痛點(diǎn)的,請(qǐng)點(diǎn)擊一下右上角X。
然而痛點(diǎn)結(jié)束了嗎?沒有。
像上面離職的工程師的工作狀態(tài)應(yīng)該是大有人在吧?然后大家工作十幾年如一日,覺得辛苦,就希望老板漲工資,漲一兩次還不行, 最好是年年漲,每年漲一次,翻倍。 這種要求非常合理,可以理解。
然而,站在老板角度, 十年前的你和十年后的你,工作內(nèi)容是一樣的, 工作量是一樣的,為公司的貢獻(xiàn)也是一樣的,而十幾年下來(lái),市場(chǎng)形勢(shì)可能已經(jīng)逆轉(zhuǎn), 采購(gòu)成本大幅度提高,項(xiàng)目競(jìng)爭(zhēng)厲害, 拿到項(xiàng)目的利潤(rùn)已經(jīng)今非昔比了。簡(jiǎn)單說(shuō)你為公司創(chuàng)造的效益并沒有提高,反而有可能有所減少,十幾年老板肯定已經(jīng)為你漲過(guò)幾次工資了,你這兒還獅子大開口,還不滿足, 還繼續(xù)翻倍的要, 老板那兒都想開了你,換個(gè)剛畢業(yè)的年輕人來(lái)呢!人家工資要求可沒你那么高。
你可能會(huì)說(shuō),切!新畢業(yè)的大學(xué)生啥都不會(huì),怎么能趕上我一個(gè)十幾年工作經(jīng)驗(yàn)的老工程師?然而你好像忘了,十幾年前,你也剛畢業(yè),老板重用你,還不是照樣頂下來(lái)干到現(xiàn)在?
更何況,前面的設(shè)備工藝沒那么成熟,現(xiàn)在早成熟的透透的了,根本用不上這樣富有經(jīng)驗(yàn)的頂級(jí)高手了。
所以你如果為工資收入感到痛, 老板同時(shí)還為你收入高,貢獻(xiàn)不匹配也在痛。 如果現(xiàn)在還不痛, 那就終有一天被裁員了,才真的感到痛嗎?
右上角有個(gè)X…….
要解決最后這個(gè)痛點(diǎn), 可不僅僅是減少bug就夠的。 通常在職場(chǎng)上,這唯一的途徑是升職。工作中做出一定的業(yè)績(jī),被領(lǐng)導(dǎo)賞識(shí),然后有機(jī)會(huì)提拔,上升到管理層,就可以極大程度跳離出差長(zhǎng)工資低的苦海。然而對(duì)大部分純粹的技術(shù)人員來(lái)說(shuō),通常不諳人情世故,因而很難有機(jī)會(huì)做管理的。那么唯一的途徑是提高自己的工作效率。
比方說(shuō), 如果你是車間的車工, 你原本一小時(shí)能加工10個(gè)零件, 如果你肯動(dòng)腦,善鉆研,設(shè)計(jì)一個(gè)好的工裝,一小時(shí)能加工100個(gè)零件了, 不光自己的效率提高了,別的車工使用了你的工裝后,效率也提高了, 這些所有人的提高的效率,都是你的業(yè)績(jī)。 那么公司為你漲工資提待遇是水到渠成的事。
而對(duì)于自動(dòng)化工程師的工作來(lái)說(shuō),這個(gè)工裝就是程序標(biāo)準(zhǔn)化。而其實(shí)對(duì)于有機(jī)會(huì)升職到管理層的,其最好的業(yè)績(jī)也是為公司打造一個(gè)標(biāo)準(zhǔn)化體系。
通過(guò)建立公司設(shè)備程序的標(biāo)準(zhǔn)化體系,可以大幅度的提高工作效率,減少出差時(shí)間。
然而我們的同行中, 很多看了我各種文章的讀者,非但自己沒有能力建立標(biāo)準(zhǔn)化, 甚至連標(biāo)準(zhǔn)化的意思都不知道。 我們所指的PLC編程標(biāo)準(zhǔn)化, 不是去跑到PLC廠家為他們制定一套通用的標(biāo)準(zhǔn)化工具,直接嵌入到PLC廠家發(fā)布的軟件系統(tǒng)中, 從而限制PLC的使用者的編程方式, 以逼迫他們不能任性的使用全局變量, 不能寫垃圾程序,沒辦法寫出低效率的程序, 被逼無(wú)奈只能設(shè)計(jì)出來(lái)高效率的標(biāo)準(zhǔn)化程序。
對(duì)于這樣的理解的人, 我只能說(shuō),你們想的太美了。 盡管一些人因此而恨我,恨我限制了他們的制造垃圾程序的特權(quán),我仍然告訴你們的是, 天底下根本沒有這樣的好事。右上角有個(gè)X,那是你的去處。
我們所說(shuō)的PLC標(biāo)準(zhǔn)化編程方法,是指工程師把PLC作為工具, 在所產(chǎn)出的作品,即你的設(shè)備程序,使用標(biāo)準(zhǔn)化模塊化的方法搭建而成。 如何叫做標(biāo)準(zhǔn)化模塊化, 不是你程序中把功能分成了若干個(gè)模塊單元就可以的, 而是這些模塊要能重復(fù)使用。 即一旦開發(fā)完成, 在本公司,本行業(yè)將來(lái)的大多數(shù)項(xiàng)目中,都可以直接簡(jiǎn)單使用。
簡(jiǎn)單到什么程度?
簡(jiǎn)單到最高極致,完全按照高內(nèi)聚低耦合的目標(biāo),留給組裝環(huán)節(jié)的工作量只剩下簡(jiǎn)單耦合, 這種耦合沒有任何技術(shù)含量,任何一個(gè)沒有設(shè)計(jì)基礎(chǔ)的電工,應(yīng)屆畢業(yè)生,辦公室文員,都可以通過(guò)30分鐘的培訓(xùn),就可以完成。
那么,在最極致的情況下,一旦對(duì)某個(gè)工藝設(shè)備的邏輯開發(fā)成熟,后面的工程就不再需要工程師到現(xiàn)場(chǎng)出差,現(xiàn)場(chǎng)的安裝工人按照設(shè)計(jì)部門給付的設(shè)計(jì)資料,稍微整理下裝程序即可。 下裝后程序邏輯即可可靠運(yùn)行, 不再需要試車, 不再需要現(xiàn)場(chǎng)調(diào)試。
當(dāng)然,上面所述是終極目標(biāo)。 在終極目標(biāo)達(dá)到之前,工程師可能還需要偶爾出差,有可能只是為了到場(chǎng)安撫客戶,讓習(xí)慣上看著工程師調(diào)試動(dòng)輒一個(gè)月的客戶心理有些安全感。然而這時(shí)候的出差,對(duì)工程師來(lái)說(shuō)基本上就是商務(wù)旅游了, 沒有什么壓力, 去了以后大部分時(shí)間也就協(xié)調(diào)配合。時(shí)間也極短,原本一個(gè)月兩個(gè)月的調(diào)試時(shí)間, 現(xiàn)在3-5天就完成了。
然后, 原本一個(gè)工程師,一年能干5-6個(gè)項(xiàng)目的, 現(xiàn)在一年干20-30個(gè)也不在話下。 而且勞動(dòng)強(qiáng)度還降低了。 這種情況下,這樣的高效率,老板如果不給漲工資, 合天理嗎?
估計(jì)能有耐心看到這里,并看懂的自動(dòng)化工程師,可能已經(jīng)為數(shù)不多了。
這個(gè)時(shí)候,有人會(huì)舉手說(shuō), 萬(wàn)老師,你的思想我懂了。 你的標(biāo)準(zhǔn)化的思想我絕對(duì)支持,然而有個(gè)建議, 你能不能。。。。?
STOP!
你支持我,我還未必支持你呢!
對(duì)于反對(duì)我的人,我自然毫不留情地否定,然而對(duì)那些只是口頭上支持, 其實(shí)未必真正了解的,我也是不畏懼說(shuō)真話的。
標(biāo)準(zhǔn)化編程方法, 其實(shí)不是一種什么思想,他的實(shí)現(xiàn)方法很簡(jiǎn)單, 4個(gè)字, 面向?qū)ο蟆?如果懂的人自然早就已經(jīng)懂了。
然而標(biāo)準(zhǔn)化編程,其實(shí)是一種能力。
拿我自己來(lái)說(shuō), 我在十幾年前就開始研究琢磨標(biāo)準(zhǔn)化編程的方法,然而自己一直沒能全部打通。10年前在S7-300中已經(jīng)做到了程序中不使用M和T,然而系統(tǒng)還是需要長(zhǎng)時(shí)間的現(xiàn)場(chǎng)調(diào)試,因?yàn)槭韬鲈斐傻腷ug顯著減少, 返廠次數(shù)少了。然而總體效率提高并不明顯。
這個(gè)時(shí)候我整體技能還不成熟, 同時(shí)也缺少一個(gè)關(guān)鍵點(diǎn)的推力。 然后在5年前開始使用S7-1500, V13, V14, V15。到V15的時(shí)候, 突然發(fā)現(xiàn)它可以比以前更好的支持面向?qū)ο罅耍∪缓笕玳_掛一般,除了搞出了S7-1500標(biāo)準(zhǔn)化應(yīng)用, 甚至還倒回去在S7-200 SMART中實(shí)現(xiàn)了標(biāo)準(zhǔn)化架構(gòu)。
按說(shuō)S7-200的標(biāo)準(zhǔn)化與S7-1500根本沒有關(guān)系。 S7-200早就存在了20年,我早用的滾瓜爛熟,為啥之前我搞不出呢, 為啥在S7-300時(shí)搞不出呢? 還是自己能力不夠嘛!
我在最后一個(gè)公司上班時(shí),公司別的部門成立項(xiàng)目組要搞標(biāo)準(zhǔn)化,那個(gè)時(shí)候公司用的是S7-300。 我自己既然沒有這個(gè)能力, 自然也幫不上什么忙。 我認(rèn)為搞不出,他們也不相信。 然后就由他們自己搞了。
上個(gè)月, 我問(wèn)了一下以前的那位同事,你們當(dāng)年搞的標(biāo)準(zhǔn)化,怎么樣了啊?
回答說(shuō), 搞了一堆函數(shù)庫(kù),但根本沒人用。 廢棄。
我說(shuō), 這很正常。以我當(dāng)年的認(rèn)知,都自認(rèn)為沒有能力搞成, 我也頂多給公司做個(gè)樣板工程, 給同事們打個(gè)樣,以后同樣工程可以參考而已。 你們技術(shù)部都沒有現(xiàn)場(chǎng)調(diào)試經(jīng)驗(yàn)的, 僅憑臨時(shí)學(xué)一下STEP7,不會(huì)的地方還要逐步向我請(qǐng)教的,就能一步到位做出標(biāo)準(zhǔn)化開發(fā)?天方夜譚呢!
所以看出來(lái)了吧, 能力以及能力的成長(zhǎng)才是第一主要的。
我也經(jīng)常看到一些公司說(shuō)早好幾年就在搞標(biāo)準(zhǔn)化設(shè)計(jì),有的公司甚至專門成立了標(biāo)準(zhǔn)化研究院。我就首先問(wèn),是從哪一年開始的,什么版本。
如果年代比我還久遠(yuǎn),如果PORTAL版本在V15之前, 那我就有數(shù)了,基本上是個(gè)失敗的標(biāo)準(zhǔn)化。
他們的人的能力咱不知曉,但V15之前的版本, 對(duì)開發(fā)者的能力的要求是翻倍的。按我的估計(jì),在S7-300時(shí)代,或者PORTAL V13/14的階段,要搞標(biāo)準(zhǔn)化,需要開發(fā)者具備的能力可遠(yuǎn)比我從V15開始的時(shí)候的難度大。就好比我都在充分掌握了各種原理技巧的情況下, 開發(fā)三菱和OMRON的標(biāo)準(zhǔn)化都要1-2個(gè)月,過(guò)程中隨時(shí)遇到要失敗退出的選擇項(xiàng)。所以如果換做我來(lái)承接這樣的任務(wù), 以當(dāng)時(shí)的我的能力來(lái)看,我是做不出的。而即便到今天,整個(gè)業(yè)界還都是我自己一個(gè)人在為標(biāo)準(zhǔn)化吶喊,如果他們當(dāng)時(shí)都成功了,業(yè)界不可能沒有任何風(fēng)聲,現(xiàn)在也不至于只有我一個(gè)人在孤軍奮戰(zhàn)。
標(biāo)準(zhǔn)化的程序架構(gòu),在整個(gè)行業(yè)前面發(fā)展的40年里, 是從來(lái)沒有出現(xiàn)的。 所以,所有同行,之前并沒有見過(guò)這樣的項(xiàng)目案例,所入門學(xué)習(xí)的參考資料, 全都是過(guò)去傳統(tǒng)模式的架構(gòu)。所以自然有很多很多人持懷疑態(tài)度。
懷疑者的心態(tài),我猜有兩種。
第一種,不相信在PLC行業(yè)能做出標(biāo)準(zhǔn)化的程序, 甚至有的人都一直不相信可以做出不使用全局變量的程序。
第二種,相信客觀世界能,但不相信我有這個(gè)能力做出來(lái),或者不相信我所做的標(biāo)準(zhǔn)化程序和他們以往所做的和見到過(guò)的程序有什么不一樣。
這兩撥人,總是一副挑戰(zhàn)的心態(tài), 以激將法來(lái)問(wèn)我要程序。說(shuō)什么你敢拿出個(gè)例子程序來(lái)嗎,除非你拿出來(lái)給我看了我才相信你。
呸!上面的話看到了嗎?連相信我的人我都從來(lái)不去討好, 我憑什么要去贏得你的相信?你的相信與不相信與我有毛關(guān)系?你相信不相信, 那只代表了當(dāng)下時(shí)刻你的認(rèn)知水平。 而于我毫無(wú)價(jià)值。
這些人是不是抱有這樣的心態(tài): 你的標(biāo)準(zhǔn)化好不好, 我們有投票權(quán), 不征得我們大多數(shù)人的同意,你的標(biāo)準(zhǔn)就推廣不下去, 就是廢紙一張。
經(jīng)過(guò)本文的分析,大家現(xiàn)在應(yīng)該都明白了吧,標(biāo)準(zhǔn)化是企業(yè)的標(biāo)準(zhǔn)化,是每位自動(dòng)化同行所在的公司的標(biāo)準(zhǔn)化,與PLC廠家沒有任何毛關(guān)系。 企業(yè)是否做到標(biāo)準(zhǔn)化, 與工程師個(gè)人的效率,工作量,出差辛苦程度,薪資水平這些所有加起來(lái)的痛點(diǎn)有關(guān)系,而與我并沒有多少直接關(guān)系。
我現(xiàn)在就在期待,看一些公司的招聘信息, 看到他們要招聘能出差的有能力的自動(dòng)化工程師卻找不到的時(shí)候,然后我來(lái)出手幫他們提高效率解決人手不足的問(wèn)題。
像最開始的故事里, 那位離職的工程師, 在外面飄了2年之后,又回來(lái)跟老板聯(lián)系,有意再回公司工作,繼續(xù)出差也愿意。 然而被老板很冷淡的拒絕了。 他當(dāng)初是和另一個(gè)工程師幾乎同時(shí)辭職的, 現(xiàn)在,這樣的崗位不缺人了。因?yàn)槲乙呀?jīng)輔導(dǎo)他們實(shí)現(xiàn)了標(biāo)準(zhǔn)化設(shè)計(jì),就那些老是大同小異的重復(fù)性的工程項(xiàng)目,一個(gè)工程師足夠了。有一些小項(xiàng)目,電工在現(xiàn)場(chǎng)也就干了。 都不需要工程師去了。
所以,這其中效率提高了多少, 大家都能基本有數(shù)了吧!