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