0208 【萬(wàn)泉河】終于被松下PLC打敗
2月2日上周四,進(jìn)行了LBP培訓課程講座的第一課,生成了課件,已經(jīng)參加的學(xué)員如果在當堂沒(méi)有聽(tīng)懂看懂,可以再參考課件內容,逐步自己實(shí)現。所以, 如果沒(méi)有來(lái)得及報名而想要學(xué)習LBP的同行,也仍然隨時(shí)可以報名參加。就不需要等開(kāi)課時(shí)間了,直接一步到位收到課件,跟隨課件學(xué)習。
總的來(lái)說(shuō),我做LBP的培訓就是手把手帶大家演練如何實(shí)現LBP的應用。做好了一次, 以后就永遠有用。
那么一些入行還不夠深,現在還沒(méi)有認識到自己有學(xué)習使用LBP的需求的,可以在將來(lái),比如N年之后發(fā)現了自己達到了那個(gè)層級了,想要使用LBP框架,卻發(fā)現自己掌握LBP有困難的時(shí)候,再來(lái)報名學(xué)習也不遲。
而我自己,完成第一堂課之后到現在銷(xiāo)聲匿跡了將近一周時(shí)間,做啥去了?
做松下PLC的標準化去了。
松下FP-XH PLC的編程軟件FPWIN PRO7,我以前研究過(guò),只是確認了可行性,就沒(méi)有繼續再做。
所以,在培訓課程的欄目里,要求的是先學(xué)習OMRON或者三菱的標準化,然后自行研究升級到松下PLC實(shí)現。
然而我忽視了系統軟件平臺的性能,或者說(shuō)沒(méi)能參透松下軟件開(kāi)發(fā)者的腦回路,然后鬧了烏龍,翻車(chē)了。
起因是這樣,有一個(gè)同行,數次跟我聯(lián)系想學(xué)煙臺方法,然而對我提及的不管西門(mén)子還是歐姆龍,三菱都不感興趣。因為他全都沒(méi)有碰過(guò),F在的公司只使用松下FP-XH的PLC。所以要他先去學(xué)會(huì )其他品牌,再學(xué)透,再學(xué)會(huì )在松下PLC的應用,就有點(diǎn)難度太大。
于是他就提出先交一半定金,等我專(zhuān)門(mén)做成松下PLC的標準化程序之后,再付另一半。
也寄了一臺他手頭的PLC硬件給我,供我開(kāi)發(fā)時(shí)測試用。正好,講座完成的次日,就收到了快遞,所以就開(kāi)始做煙臺方法的程序遷移了。
這位朋友不會(huì )ST編程語(yǔ)言,只會(huì )梯形圖,為了方便他將來(lái)的學(xué)習理解,我就沒(méi)有從現成的ST程序中移植,而是從頭用LAD搭建的FB塊庫函數。當然, 參照了一部分SMART200的煙臺方法的程序,以及《三菱PLC標準化編程煙臺方法》書(shū)稿的樣例程序以及我進(jìn)一兩年寫(xiě)的文章中提到的一些庫函數。
差不多3天時(shí)間,底層庫函數基本完成,然后分別建立了一些實(shí)例,開(kāi)始拼裝,開(kāi)始準備做自動(dòng)部分了。
然后就發(fā)現了問(wèn)題。
編譯不通過(guò),報錯誤為:
錯誤:PLC中沒(méi)有足夠的可用子程序數量,請刪減調用的用戶(hù)自定義的FUN和FB的數量,或改變成具體有更多子程序的PLC機型。
被這個(gè)錯誤提示直接給干懵逼了。分析了很久后找到了原因。
原來(lái)松下PRO7的平臺,在編譯我們做的FB/FC程序的時(shí)候,并不是給做成真正意義上的重復調用的函數,而是對每一次調用,都給把參數的實(shí)際變量的地址代入,做了個(gè)一次性的函數跳轉。即一個(gè)FB如果調用10次,那么就生成了10個(gè)不同編號的SUB,分次調用。
就好比,你總結了一個(gè)A+B+C=D的數學(xué)公式,但到了松下的系統里面,他不給你列公式,而是把可能用到的算式全部給列在里面了:
1+1+1=3
1+2+3=6
2+2+2=6
2+3+4=9
3+3+4=10
等等等等。
原本,這種方法除了浪費一點(diǎn)程序空間,編譯代碼量增大之外,別的也無(wú)所謂。然而FP-XH的PLC, SUB的編號最大只到255,即最多只能有256個(gè)函數調用。
這就難倒我了。
標準化的基礎是程序功能的模塊化,通過(guò)把相同的功能封裝成塊,通過(guò)重復調用,減少了咱們人工的重復工作量。
比如,我現在比較在意的一個(gè)數據格式是設備時(shí)間參數格式都使用以S為單位的浮點(diǎn)數。這樣在數據交互過(guò)程中就少一個(gè)數據類(lèi)型和數據轉換的過(guò)程。
所以,我通常開(kāi)頭第一步,是對原本定時(shí)器功能做一個(gè)封裝,設定值和運行值都改為浮點(diǎn)數,然后程序塊中所有需要用到定時(shí)器的地方,統一使用自己新封裝的定時(shí)器。
有人一直對煙臺方法不理解,以為我在推行強制編程標準。其實(shí)如果有的話(huà),對定時(shí)器數據格式的統一,可以算作一項,可能也是僅有的一項了。但也只是對我自己和煙臺方法學(xué)員的一種倡議。
這在平常的PLC系統,原本都沒(méi)有問(wèn)題的。然而到了松下,問(wèn)題就出來(lái)了。
我這種對定時(shí)器的封裝方法,如果對應到過(guò)去傳統垃圾程序的寫(xiě)法,一套系統用到256個(gè)定時(shí)器會(huì )把定時(shí)器資源耗光的話(huà),我這里就是一步到位同時(shí)把子程序資源也耗光了。得,我啥子程序都不用寫(xiě)了。還做什么模塊化,標準化!
如果我現在真的要做這樣的項目,那方法就是把所有的封裝全部拆掉,比如定時(shí)器,所有程序中用到的地方,再不厭其煩地前面加入REAL到TIME的轉換,后端需要監測運行值ET時(shí)再做TIME到REAL的轉換,程序不做嵌套,所有FB塊都一氣呵成,大概也能做成標準化的架構。
那對我來(lái)說(shuō)就太惡心了。
原本,松下PLC還有個(gè)舊一點(diǎn)的軟件FPWIN GR7,同一款PLC也仍然可以在那個(gè)平臺上編程,那個(gè)平臺是和我研究過(guò)的信捷XD一樣,沒(méi)有現成的FB/FC功能,所謂子程序全年都靠著(zhù)跳轉來(lái)實(shí)現的。我如果非要自己部署規劃,和當時(shí)在信捷中實(shí)現的一樣的方法,也能做好。
然而也會(huì )吃和信捷同樣的虧。信捷XD PLC新版軟件開(kāi)始具備了FB/FC功能,我做的超前研究?jì)r(jià)值被清零了,而松下這里既然已經(jīng)有了高版本的軟件,如果我在低版本里面做,那么只要廠(chǎng)家隨時(shí)把PRO7的軟件做個(gè)升級,改變編譯方法,比如到PRO8之后這個(gè)問(wèn)題就解決了,那我就又白做了。
所以,思考一個(gè)晚上后,昨天早上還是跟對方工程師聯(lián)系,退款給他了。
認敗,才是更好更體面的退出方式。
由此我想到了歷史上曾經(jīng)的WINTEL聯(lián)盟,微軟和英特爾兩家公司互相配合互相促進(jìn)和提高,互相給對方提出更高的需求,而自己提供更高級的產(chǎn)品,最終促進(jìn)了整個(gè)IT行業(yè)的飛速發(fā)展。
而在工控行業(yè),需要有更多和我一樣的PLC應用工程師,從應用角度,對PLC廠(chǎng)家軟硬件平臺提出更貼合應用實(shí)際的需求,他們改進(jìn)提高之后,也可以促進(jìn)提高我們的應用水平。
由此實(shí)現相得益彰的TIKTOK滴答。
所以,總有一些同樣的PLC應用工程師,從個(gè)人聲譽(yù)的角度要爭什么行業(yè)大佬資格,從而互相碾壓攻擊,你們如果有那樣的理想,不如多做些基礎的研究工作,提出更高的問(wèn)題,為行業(yè)集體發(fā)出一些呼吁的聲音,最終才能促進(jìn)行業(yè)的發(fā)展。想爭第一的名份的,先看看自己手里有多少翻車(chē)的教訓,有提出過(guò)多少新的理論方法貢獻給行業(yè)。
我一個(gè)人的聲音顯然太微弱了些。