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