0114 【萬(wàn)泉河】PLC通用編程理論
有沒(méi)有想過(guò),PLC行業(yè)有哪些通用編程理論?
在回答這個(gè)問(wèn)題之前,首先要把概念界定清楚。
首先得是所有PLC,行業(yè)內所有廠(chǎng)家的都算在內。這個(gè)理論得能通用于所有品牌所有型號,而不能是只針對其中的某個(gè)品牌,某個(gè)型號。 那樣的算不上理論,頂多可以算是它家的產(chǎn)品說(shuō)明書(shū),或者對產(chǎn)品說(shuō)明書(shū)的深度理解應用。
其次只能是PLC,不能把PLC之外的外圍工藝算進(jìn)來(lái)。外圍工藝有的確實(shí)挺難的,但只是那個(gè)工藝難,與PLC并沒(méi)有什么關(guān)系, PLC頂多是作為一個(gè)載體工具實(shí)現了他們需要的工藝功能,一方面,這套工藝解法離開(kāi)了那個(gè)行業(yè),如果到了更多應用PLC的行業(yè),毫無(wú)用處。那就算不上PLC的編程理論。另一方面,同樣的工藝,也完全有可能被人用PLC之外的其他控制器實(shí)現,比如單片機MCU, MPU ,DSP , CNC,FPGA,嵌入式,甚至工控機,觸摸屏等都能實(shí)現,使用了同樣的解法,控制了同樣的工藝設備,那么就不能稱(chēng)之為PLC理論。
按照上述的2個(gè)標準套下來(lái), 很多大家習以為常的認為的編程理論方法好像都不符合了。
比如卷繞算法。 根據材料的線(xiàn)速度,角速度,計算直徑,根據糾偏系統的偏差測量張力,計算估計傳動(dòng)系統到滾軸的轉動(dòng)慣量,計算和動(dòng)態(tài)控制速度和張力,這些是這個(gè)工藝本身的控制理論方法,掌握了之后可以用PLC實(shí)現,也可以用單片機實(shí)現,更可以用更多的其它的控制器實(shí)現。 甚至掌握的好的高手,可以自己開(kāi)發(fā)專(zhuān)用的控制器,封裝好了以后,作為一個(gè)單獨的產(chǎn)品,輸送給全行業(yè)使用。
然后使用者拿到后,不需要懂得其原理,只需要經(jīng)過(guò)簡(jiǎn)單設定,甚至連簡(jiǎn)單設定都不需要,系統自動(dòng)可以識別優(yōu)化參數,然后就把工藝設備馴服控制到乖乖聽(tīng)話(huà)。這樣的是真高手。 這樣的公司是真的有技術(shù)含量,可以為客戶(hù)提供真正的技術(shù)價(jià)值。
相似的例子還有PID。這大家就更熟悉了。 很多做PID表的專(zhuān)用廠(chǎng)家,其控制模型當然是完全封裝的,不對外的。但其控制效果比我們自己用PLC來(lái)寫(xiě)PID程序塊,哪怕是套用廠(chǎng)家寫(xiě)好的PID自?xún)?yōu)化功能,控制效果也好很多。
所以這些都不能算到PLC的編程理論里面。
那么還有什么,起保停?狀態(tài)機?
沒(méi)錯,起保停確實(shí)是PLC行業(yè)的通用理論。 然而它是PLC的先天基因,甚至比PLC誕生的還早,整個(gè)PLC這個(gè)產(chǎn)品就是從繼電控制硬件線(xiàn)路發(fā)展來(lái)的,即便PLC發(fā)展到今天,更高性能的CPU芯片都用上了,但起保停的理論不變,一直是可以使用的。 當然,我也早就寫(xiě)過(guò)文章,分析過(guò)PLC編程中的起保停與SR的關(guān)系,以及與高級語(yǔ)言IF THEN 語(yǔ)句的關(guān)系。
而狀態(tài)機,其實(shí)本質(zhì)上就是個(gè)大號的起保停,或者倒過(guò)來(lái)說(shuō),起保停就是個(gè)小號的狀態(tài)機。只不過(guò)狀態(tài)機的模式狀態(tài)會(huì )有13種或者17種,而起保停的狀態(tài)只有區區的4種或6種。
所以,你可以用IF THEN寫(xiě)出來(lái)起保停相同的邏輯,但要寫(xiě)狀態(tài)機的邏輯,就只能用CASE語(yǔ)句了。 當然, 我們倒過(guò)來(lái)看, 狀態(tài)機的編程思路是從高級語(yǔ)言學(xué)來(lái)的,原本就是從他們的SWITCHE CASE語(yǔ)句照抄過(guò)來(lái)的。 還真算不上PLC通用編程理論了。 你總不能說(shuō)IF THEN是一種編程理論方法吧?同樣的道理。
所以同理,我一直在宣揚的面向對象的編程方法,也不能算作PLC通用編程理論。 那原本是計算機軟件編程行業(yè)幾十年前就有的舊貨,我只不過(guò)把它成功應用到PLC行業(yè),當然同時(shí)也有更多工程師也在嘗試把它應用到PLC中,我只不過(guò)是應用更早,更徹底,也更領(lǐng)先一步把理論總結成章,寫(xiě)成了文章和書(shū),也愿意把真正工程應用的案例樣板拿出來(lái)分享(非免費)而已。
而其他同行為什么沒(méi)有人分享出來(lái)同樣有價(jià)值的知識呢?是他們不喜歡或是看不到其中存在的價(jià)值?還是他們自己做出來(lái)應用在自己的行業(yè)中已經(jīng)賺得盤(pán)滿(mǎn)缽滿(mǎn)不在乎這點(diǎn)了?還是他們行業(yè)實(shí)在機密得很,不方便分享?
要我看,都不是。
我一直想找一些同行的佼佼者,有錢(qián)有閑有技術(shù)有能力,然后可以合謀合作做一些事情。 然而一直都找不到。 很多被行業(yè)公認的大師高手,其實(shí)還是要被日常工作所累,自己自由的時(shí)間根本不多。 所以基本上可以否定了前兩條。
而第三條,就更不可能了。 按照本文的觀(guān)點(diǎn),通用的技術(shù)理論方法可以超越于行業(yè)的。 如果所做的設計有行業(yè)工藝機密,那可以脫敏后拿出來(lái)!甚至可以不針對具體項目,就找一點(diǎn)簡(jiǎn)單控制對象, 80個(gè)指示燈,80個(gè)雙聯(lián)開(kāi)關(guān),80個(gè)模擬量,80,800臺傳送帶電機等等。
所以,總結下來(lái), 要把面向對象的方法徹底應用到PLC行業(yè),還不是簡(jiǎn)單的了解了庫的封裝,類(lèi)的派生繼承多態(tài)就可以實(shí)現的。 背后還需要一些適用于PLC行業(yè)的專(zhuān)用理論。
除此之外,讀者們是不是很難找到一些符合條件的理論了?
我還真替大家找到了一個(gè):IO映射。
這是一個(gè)從名字就可以知道實(shí)現方法所有內容細節的方法理論,雖然淺顯,但確實(shí)通用,也被好多同行奉為核心技術(shù)。而恰恰是我一直以來(lái)反對使用的技術(shù)。我有寫(xiě)過(guò)好多篇不建議使用IO映射的文章。
但我首先要對很多只熟悉倍福TC2的用戶(hù)做個(gè)解釋。倍福的PLC使用的CODESYS的內核,其硬件組態(tài)和軟件編程是分開(kāi)的2個(gè)軟件。到TC3以后雖說(shuō)集成到了一起,但本質(zhì)上也還是2家人。
所以,硬件組態(tài)的通道要和軟件系統的變量有對應關(guān)系,需要做一一對應的映射,名字就叫做IO映射,這是軟件的操作過(guò)程。
以往我提到不用IO映射的時(shí)候,就有倍福的用戶(hù)質(zhì)疑我, 不做IO映射,軟件都無(wú)法和硬件物理世界產(chǎn)生關(guān)聯(lián),還如何控制設備?
是這樣,那些做IO映射的編程方法,是在PLC系統已經(jīng)有IQ變量得到了與物理量的通訊之外,又單獨做了一層IO映射,把數據映射到了另外的變量,M, DB 中。 即,對應到倍福,他們相當于是要做2次IO映射!
我為什么會(huì )想到這一點(diǎn),以及為什么會(huì )想到這個(gè)話(huà)題,是因為我看到了一張圖,一張工控行業(yè)需要掌握的技能的思維導圖:
然后我就發(fā)現了,在PLC編程領(lǐng)域,除了我看不上的IO映射之外,整個(gè)行業(yè)還沒(méi)有什么可以值得學(xué)習的通用理論。
而煙臺方法,則是填補了這個(gè)空白。
我在用煙臺方法實(shí)現PLC的標準化設計編程的同時(shí),打通了許多理論基礎。 然而我又不是太善于總結,理論都三步在許多零零星星的編程技能方法的文章里了。要說(shuō)有總結,工控行業(yè)五連鞭可以勉強算是了。
萬(wàn)線(xiàn)圈, 不用MT, 不用交叉索引, 不用IO映射, 抵制UDT。 ……工控行業(yè)五連鞭
這其中恰恰就包含了不用IO映射的理論。
理論的總結歸納,難度還是比較大的。有的時(shí)候做出來(lái)容易,但要提煉上升總結為理論,就很難。 其中一個(gè)最大的難題是:理論的命名。
我們在讀書(shū)的時(shí)候,導師教導我們的,就是反對隨意創(chuàng )造概念,亂命名。 把一些已經(jīng)存在的概念方法,自己套用后再起個(gè)標新立異的名字,就成了自己的獨創(chuàng )了。 這一點(diǎn),在經(jīng)濟學(xué)領(lǐng)域和管理領(lǐng)域,特別常見(jiàn),也特別討人厭。 一些所謂的行業(yè)大師,專(zhuān)家,其實(shí)只不過(guò)是PPT大師,創(chuàng )新詞高手而已。
我在前面2篇文章:
1218 【萬(wàn)泉河】翹空之美--每一個(gè)PLC工程師都應該了解的真相
0103 【萬(wàn)泉河】PLC程序塊INOUT管腳的倒置用法
其中的翹空和倒置,都是我新創(chuàng )的詞匯。不是為了獵奇而非要獨創(chuàng ),而實(shí)在是沒(méi)有找到合適的已經(jīng)通行的詞匯。 而正因為此,我才可以宣布這是自己獨創(chuàng )的理論。
其中的翹空,還被人評價(jià)用留白比較符合他的認知習慣。
怎么說(shuō)呢,就相當于一個(gè)大齡剩女,你可以描述她是獨身主義,也可以描述她是沒(méi)人要嫁不出去。 但前者是自己主動(dòng)選擇的,后者則是被動(dòng)的。
我們選擇給FB的管腳翹空的時(shí)候,是我們主動(dòng)的選擇,而且以此為美。 而留白的詞匯就顯得蒼白,分明是被錯過(guò),被忽視的感覺(jué)。
但不管怎樣,我第一個(gè)提出了這個(gè)理論方法,那么我就有它的命名權。 哪怕我名字起的再不合適,后來(lái)者也只能遵循沿用。 你哪怕有能力起個(gè)再貼切的名字,只要是發(fā)表的理論比我晚,說(shuō)起來(lái)也是照抄了我的理論。甚至自己沒(méi)有任何建樹(shù),只是在名稱(chēng)方面指手畫(huà)腳的,就更是沒(méi)有什么意義了。
我們知道,工控行業(yè)的工程師里面,有許多是自命不凡桀驁不馴的優(yōu)秀人才。
對于這些人,可以問(wèn)一句,本文中提到的這些理論,服不服?
我猜,一定會(huì )有很多人提出來(lái):不服!
我就最喜歡這樣的能人了。 很簡(jiǎn)單, 不服的話(huà),就自己貢獻創(chuàng )造一兩個(gè)自己專(zhuān)屬的理論。PLC的入門(mén)門(mén)檻很低,從事PLC行業(yè)需要的理論也很淺,任何人都很容易對行業(yè)的發(fā)展做出點(diǎn)貢獻。做出來(lái)了以后,才可以有底氣說(shuō):不服!而在此之前,如果兩手空空,只憑嘴巴不服的話(huà),那這種不服只是自己釋放負面情緒,是無(wú)能的體現,并不會(huì )得到任何人的尊重。對行業(yè)也更無(wú)任何貢獻。
總結一下:目前為止,煙臺方法為PLC通用編程貢獻了99.9%的理論。