0613 【萬(wàn)泉河】程序代碼哪有什么標(biāo)準(zhǔn)和標(biāo)準(zhǔn)化
包括PLC程序。
我發(fā)現(xiàn),有一些工程師對(duì)編程的標(biāo)準(zhǔn)化有一些誤區(qū)。 誤以為可以有一套標(biāo)準(zhǔn)的程序代碼,或者標(biāo)準(zhǔn)的程序架構(gòu)。
所以就會(huì)產(chǎn)生一些不切實(shí)際的妄念,在學(xué)會(huì)了寫(xiě)程序三五年,或者干過(guò)了三五個(gè)項(xiàng)目或者幾十臺(tái)小設(shè)備之后, 就開(kāi)始目光高遠(yuǎn)要搞所謂的標(biāo)準(zhǔn)化了。而其實(shí)也就才剛剛掌握基本的編程技能,也僅僅達(dá)到能完成設(shè)計(jì)任務(wù),就覺(jué)得自己有身份也有責(zé)任為行業(yè)或者公司,創(chuàng)造一部編程憲法文件,規(guī)定別人寫(xiě)代碼的規(guī)范,或者程序框架,即所謂的標(biāo)準(zhǔn)化程序。
更有一些人, 拿自己或者別人,或者官方機(jī)構(gòu)所出的一套程序案例,就當(dāng)成了標(biāo)準(zhǔn)化的模板來(lái)兜售,代碼有可能是免費(fèi)的, 那么就兜售學(xué)習(xí)掌握這套代碼的教程。 即稱(chēng)之為標(biāo)準(zhǔn)化教程。 而且還經(jīng)常冠以天花板,第一,終極目標(biāo)等抬頭。
我就實(shí)在不能忍,于是在某一篇類(lèi)似的鏈接之后評(píng)論回復(fù)道:
真服了,從來(lái)只字不提做庫(kù)和庫(kù)的使用,卻總敢吹什么完美,最高水平,終點(diǎn)。不理解這都哪來(lái)的勇氣
庫(kù)的應(yīng)用在你們眼里是屬于早就過(guò)了這個(gè)階段的小兒科呢,還是還沒(méi)進(jìn)化到這一階段呢?
任何成熟的技能,那就封裝為庫(kù),然后就可以無(wú)限次重復(fù)應(yīng)用,減少工作量,提高效率啊!
而除此之外,做標(biāo)準(zhǔn)化還有什么意義!
然后就引來(lái)了眾人紛紛評(píng)論。 其中有最典型的,模擬魯迅的語(yǔ)氣說(shuō)話:“世上本沒(méi)有標(biāo)準(zhǔn),用的人多了,就成了標(biāo)準(zhǔn)”。
這是典型的胡話,然而卻代表了一大堆人的認(rèn)知。同時(shí)也代表了這些只字不提庫(kù)卻兜售標(biāo)準(zhǔn)架構(gòu)方法的機(jī)構(gòu)團(tuán)體的思維模式:
賣(mài)標(biāo)準(zhǔn)化程序啦!你們都來(lái)用我的程序方法,用的多了,我的程序就成了標(biāo)準(zhǔn)了。
然而這里面就出現(xiàn)了一個(gè)是先有雞還是先有蛋的悖論:需要足夠多的人采用你這套程序框架, 以擁護(hù)抬舉它成為標(biāo)準(zhǔn),然而在無(wú)人使用之前,它咋就成為標(biāo)準(zhǔn),并以標(biāo)準(zhǔn)為旗號(hào)宣傳和兜售的呢?
所以,所有的所謂的標(biāo)準(zhǔn)化程序代碼,都存在造假宣傳的問(wèn)題。 你都不需要看他吹噓第一完美天花板, 就看他用標(biāo)準(zhǔn)化的標(biāo)題,就已經(jīng)是了。
我們從來(lái)認(rèn)為,程序代碼是沒(méi)有標(biāo)準(zhǔn)的。 不存在一個(gè)標(biāo)準(zhǔn)的寫(xiě)程序的方法,必須按照某位大神的寫(xiě)程序的方法,嚴(yán)格遵守了,程序就標(biāo)準(zhǔn)。 只要稍微違反,就是不標(biāo)準(zhǔn)。
然后就一定會(huì)有讀者笑了:你萬(wàn)老師這是自己打自己臉嗎?你自己兜售的煙臺(tái)方法的標(biāo)準(zhǔn)化程序,怎么就敢厚臉皮稱(chēng)之為標(biāo)準(zhǔn)的?
有這種認(rèn)知的不在少數(shù)。 有很多人理解成我在推廣編程標(biāo)準(zhǔn)或者標(biāo)準(zhǔn)程序,私下都標(biāo)定了價(jià)碼,我得給他多少好處,至少多少贊美或拉攏的話,他才會(huì)給我點(diǎn)面子,支持我,投我一票,祝我的方法成為行業(yè)標(biāo)準(zhǔn)。
然而殊不知我誰(shuí)的賬都不買(mǎi)。 反而需要人掏出真金白銀來(lái)才能獲得我做的標(biāo)準(zhǔn)化架構(gòu)下的樣板程序。簡(jiǎn)直讓很多人的價(jià)值觀碎了一地, 甚至不少人徹底黑化成為了噴子。
我們所指的標(biāo)準(zhǔn)化,從來(lái)就不是程序代碼的標(biāo)準(zhǔn)化,而是設(shè)計(jì)目標(biāo)的非標(biāo)自動(dòng)化設(shè)備可以用標(biāo)準(zhǔn)化的流程設(shè)計(jì)生產(chǎn),即生產(chǎn)流程的標(biāo)準(zhǔn)化SOP。如果不了解這個(gè)概念的,可以去搜索了解一下SOP的概念。 我在專(zhuān)著《PLC標(biāo)準(zhǔn)化編程原理與方法》的最后一個(gè)章節(jié)《標(biāo)準(zhǔn)化設(shè)計(jì)工作的未來(lái)》中詳盡做了描述。 另外我也在多篇公眾號(hào)文章中做過(guò)闡述。
當(dāng)然,非標(biāo)自動(dòng)化設(shè)備來(lái)說(shuō),其實(shí)現(xiàn)SOP的最大的難點(diǎn)在于軟件,很多自動(dòng)化設(shè)備公司,其采購(gòu)、生產(chǎn)、管理,以及市場(chǎng)營(yíng)銷(xiāo),銷(xiāo)售,甚至機(jī)械設(shè)計(jì)電氣設(shè)計(jì),都可以實(shí)現(xiàn)標(biāo)準(zhǔn)化設(shè)計(jì)流程,用設(shè)計(jì)的標(biāo)準(zhǔn)的OA流程進(jìn)行管理。而唯獨(dú)自動(dòng)化軟件部分,遲遲不能實(shí)現(xiàn)SOP,反而要獨(dú)立于OA系統(tǒng)之外。
這有些相當(dāng)滑稽,每一個(gè)公司,推行辦公自動(dòng)化系統(tǒng),部署的軟件系統(tǒng),最接近的專(zhuān)業(yè)是自動(dòng)化軟件。 如果公司人手不夠,往往部署這些系統(tǒng)的過(guò)程中還需要自動(dòng)化工程師的協(xié)助。 然而偏偏,給整個(gè)公司的SOP流程都搭建起來(lái)了,公司的產(chǎn)品中的軟件部分卻實(shí)現(xiàn)不了SOP。
而另一個(gè)吊詭之處還在于, 機(jī)械裝備,電氣元件這些硬性的東西,都能實(shí)現(xiàn)自動(dòng)化柔性制造按訂單生產(chǎn),然而自動(dòng)化軟件作為軟件產(chǎn)品,反而卻一直不能實(shí)現(xiàn)自動(dòng)化。 老板們問(wèn)起來(lái)的時(shí)候,我不知道自動(dòng)化工程師們是理直氣壯呢還是會(huì)感覺(jué)到一些理虧。
經(jīng)常遇到一些自動(dòng)化工程師,強(qiáng)調(diào)公司的非標(biāo)項(xiàng)目或者設(shè)備訂單,每臺(tái)設(shè)備都不一樣, 每臺(tái)都不一樣,每臺(tái)都不一樣。 然而有沒(méi)有想過(guò),所謂的每臺(tái)都不一樣的控制程序,相同之處有多少,差異又有多少,需要相同到多少程度的時(shí)候,才會(huì)認(rèn)為是一樣。 是百分百嗎?如果設(shè)備程序百分百相同,比如家用空調(diào)機(jī),洗衣機(jī)等設(shè)備,百分百相同的控制程序,那都不需要太多自動(dòng)化工程師做設(shè)計(jì)了。 固定的程序無(wú)窮復(fù)制即可。
而如果不同設(shè)備訂單的控制程序,90%甚至95%或99%是相同的,其中只有個(gè)位數(shù)的差異, 那豈不正是要推行SOP的意義所在的嘛!通過(guò)SOP的流程標(biāo)準(zhǔn)化, 實(shí)現(xiàn)軟件生成過(guò)程的自動(dòng)化,既降低了勞動(dòng)強(qiáng)度,提高了效率,還保證了工程師的位置一直有存在價(jià)值。-------也更為電氣工程師的優(yōu)雅工作生活提供了可能性。
而我們?cè)谲浖O(shè)計(jì)方面為SOP能做到的貢獻(xiàn)便是程序設(shè)計(jì)模塊化,這種模塊化可不是簡(jiǎn)單把程序分成幾個(gè)FC模塊那么簡(jiǎn)單。真正的模塊化必須是可以重復(fù)使用的庫(kù)模塊。在實(shí)現(xiàn)模塊的標(biāo)準(zhǔn)庫(kù)之后,可以實(shí)現(xiàn)高內(nèi)聚和低耦合。 即在設(shè)備程序設(shè)計(jì)過(guò)程中僅僅需要對(duì)庫(kù)模塊的簡(jiǎn)單實(shí)例化調(diào)用即可完成。
這其中對(duì)庫(kù)模塊的要求就比較高了。 除了需要基礎(chǔ)的通用庫(kù)模版,也包括行業(yè)專(zhuān)用庫(kù)以及工藝庫(kù)模塊。煙臺(tái)方法實(shí)現(xiàn)的便是制作和使用這些庫(kù)的方法。 其中會(huì)有一些已有的通用庫(kù), 主要是西門(mén)子公司免費(fèi)提供,可以供我們借鑒使用,甚至也可以遷移到其他的PLC平臺(tái)。而在此基礎(chǔ)上,可以再次封裝而成為行業(yè)專(zhuān)用庫(kù),并通過(guò)對(duì)這些基礎(chǔ)庫(kù)的調(diào)度調(diào)用而形成工藝庫(kù)模塊。
所以重中之重的還是對(duì)這些基礎(chǔ)通用庫(kù)的消化吸收和利用,而且這部分工作的技術(shù)含量并不高,主要還是工作量。比如要將PLC中的庫(kù)函數(shù)移植到其它各品牌的PLC,將HMI/SCADA的畫(huà)面庫(kù)移植到其它各品牌的HMI/SCADA,都是不小的工作量。 這是我一直在身體力行做的,也是一直在宣傳呼吁的,同時(shí)也一直作為對(duì)同行的觀察指標(biāo)。
每當(dāng)看到一些同行長(zhǎng)時(shí)間宣傳標(biāo)準(zhǔn)化的思想而對(duì)庫(kù)模塊的開(kāi)發(fā)應(yīng)用只字不提的時(shí)候,不免就替他們替行業(yè)感到心焦,你們倒是盡快進(jìn)化升級(jí)到對(duì)庫(kù)的開(kāi)發(fā)應(yīng)用來(lái)呀!
有朝一日只要聚焦于對(duì)庫(kù)模塊的開(kāi)發(fā)之后,就會(huì)發(fā)現(xiàn)什么所謂的代碼是否規(guī)范,是否標(biāo)準(zhǔn),是否最優(yōu),是否最簡(jiǎn)潔,系統(tǒng)負(fù)載最小,注釋是否詳盡,全都無(wú)足輕重。 因?yàn)槟阏麄(gè)程序都是高度模塊化封裝的,因而某一個(gè)模塊單元都是可以隨時(shí)升級(jí)替換的。 即便其中的某一個(gè)模塊,暫時(shí)使用的不是最優(yōu)的方法,但只要其功能完整,只要獨(dú)立封裝,就無(wú)所謂。 你只要有對(duì)它持續(xù)改進(jìn)的計(jì)劃,只要有空暇,有機(jī)會(huì),就隨時(shí)可以做,做好了替換原有的模塊,替換之后無(wú)縫切換,如此持續(xù)迭代,所有的模塊單元都可以最終實(shí)現(xiàn)終極的完美。
而這個(gè)完美的評(píng)價(jià)標(biāo)準(zhǔn)由你自己掌握。