- PLC編程實用指南(第2版)
- 宋伯生
- 12263字
- 2020-11-27 16:01:36
0.8 PLC的使用
關鍵詞:系統(tǒng)配置、經(jīng)驗編程、算法編程
使用可編程序控制器,實際也就是使PLC能在系統(tǒng)自動化、網(wǎng)絡化、信息化及智能化上有所應用。這里的關鍵是要做兩個工作:
一是進行PLC系統(tǒng)配置;
二是進行PLC應用編程。
這涉及PLC使用的硬件與軟件兩大方面。
0.8.1 系統(tǒng)配置
PLC系統(tǒng)配置也就是PLC硬件系統(tǒng)的構(gòu)成。一般講,由PLC構(gòu)成控制系統(tǒng),如果不考慮傳感器、執(zhí)行機構(gòu)等,就是若干模塊或箱體及有關附件。而箱體或模塊又各有其型號與規(guī)格,根據(jù)工藝要求,選哪些,怎么選,各選多少,怎么組合成系統(tǒng),就是這里要講的系統(tǒng)配置。
系統(tǒng)配置是對問題的綜合,與對問題的分析不同,同樣的題目,其答案可能是很多的。所以,系統(tǒng)配置的一個工作,就是要從多個答案中優(yōu)選一個方案。
系統(tǒng)配置要遵守一些原則,要用科學的方法,按步驟進行。
(1)系統(tǒng)配置原則。主要有如下幾點:
1)針對性原則。針對性原則就是要根據(jù)應用需要進行配置。要根據(jù)控制目的、規(guī)模及網(wǎng)絡化、信息處理要求、確定PLC的配置類型、品牌及組件。做到按需配置,有的放矢。
2)完整性原則。完整性原則就是要考慮所配置的系統(tǒng)是否完整,不能“丟項”,該配的都得配齊。完整性在一開頭就要注意。如果丟項,在安裝或使用時再追加,將帶來諸多麻煩:要另補充采購或訂貨,要追加預算,要修改工程設計,要延誤工期等。
3)可靠性原則。可靠性原則就是要使所配置的系統(tǒng)能可靠工作。具體可從四個方面考慮:一是PLC自身產(chǎn)品質(zhì)量;二是供貨方的技術服務情況;三是重要場合下的可靠性要求;四要否冗余配置。
4)發(fā)展性原則。發(fā)展性原則就是進行系統(tǒng)配置時要留有發(fā)展的余地以及對PLC選型時應盡可能用新型號。這是因為PLC工作可靠,自然壽命較長,但它的技術發(fā)展很快,其技術壽命并不長。堅持發(fā)展原則所作的配置可避免,即使PLC沒有用壞,但由于技術落后,而不得不淘汰。
5)繼承性原則。俗語說,做事情要瞻前顧后。系統(tǒng)配置堅持發(fā)展性原則可以說是瞻前,而堅持繼承性原則則是顧后。
顧后就是要考慮到曾經(jīng)使用過PLC的歷史及其情況。在作新的系統(tǒng)配置時,盡可能選用已用過廠商的產(chǎn)品,甚至于用已用過的機型。
因為PLC的外設可以共用,如編程器就可多次使用。如果新配置的系統(tǒng)的機型與原有的有繼承關系,新系統(tǒng)就可不配編程器,不就節(jié)省了嗎?
再就是一些編程工具軟件,若按繼承性原則配置,新系統(tǒng)也還可再用。
還有使用經(jīng)驗,若按繼承性原則配置,所積累的寶貴經(jīng)驗也可派上用場。甚至有的程序模塊還可移植。這對縮短編程時間,以至于正確地使用PLC都大有好處。
所以,在系統(tǒng)配置時,應堅持繼承性原則。
應該講,當今我國實行開放政策,一些企業(yè)引進不少PLC。但由于忽視繼承性,致使有的廠商擁有PLC生產(chǎn)廠商及型號很雜,給使用、維護都帶來不便,而且在經(jīng)濟上也不上算,是值得吸取的教訓。
6)經(jīng)濟性原則。經(jīng)濟是一切活動的基礎。進行系統(tǒng)配置當然要考慮經(jīng)濟。經(jīng)濟上是否合算,應作為是否采用PLC,要用什么樣的PLC的重要評價標準。顯然,進行系統(tǒng)配置,最后還應由效益作評價。
(2)系統(tǒng)配置類型。主要有:
1)基本配置。這種配置控制規(guī)模小,但所用的模塊也少。對箱體式PLC,則僅用一個CPU箱體。CPU箱體含有電源、內(nèi)裝CPU板、I/O板及接線器、顯示面板、內(nèi)存塊等,是一臺完整的PLC,送入程序,通電后即可工作。
CPU箱體依CPU性能分成若干型號,并依I/O點數(shù),在型號下又有若干規(guī)格。基本配置就是選擇一種合適的CPU箱體,來滿足實際的要求。自然PLC廠商箱體的型號及規(guī)格多,分布得越合適,也就越便于進行這種配置。
對模塊式PLC,基本配置選擇的項目要多些。有:
CPU模塊:它確定了可進行控制的規(guī)模、工作速度、內(nèi)存容量等。選得合適與否至關重要,是系統(tǒng)配置中首先要進行的。
內(nèi)存模塊:它可在CPU規(guī)定的范圍選擇,以滿足存儲用戶程序的容量及其他性能要求。
電源模塊:有的PLC,它是與CPU模塊合二而一的,有的是分開的。但這兩者選的原則都相同,都是依PLC用的工作電源種類、規(guī)格,和要否為I/O模塊提供工作及信號電源,以及容量需要作選擇。電源模塊多與其他模塊相配套的,型號與規(guī)格不多,容易選擇。
I/O模塊:依I/O點數(shù)確定模塊規(guī)格及數(shù)量。I/O模塊數(shù)量可多可少,但其最大數(shù)受CPU所能管理的基本配置的能力的限制。
底板或機架:基本配置僅用一個底板或機架,稱這種配置簡單,原因就在于此。但底板也有不同規(guī)格。所以,還要依I/O模塊數(shù)作不同選擇。有的PLC,如歐姆龍公司的CJ1機,無底板。那樣的PLC就沒有什么底板或機架可選擇了。
2)擴展配置。箱體式PLC擴展配置是增加I/O箱體。I/O箱體有不同的型號和規(guī)格。可按所須增加的點數(shù),選用相應的I/O箱體。
模塊式PLC的擴展配置有兩種:一為當?shù)財U展,另一為遠程擴展。
當?shù)財U展配置:在基本配置的基礎上,于當?shù)卦黾覫/O模塊及相應底板或機架,這可使PLC的控制規(guī)模有較可觀地擴大;
遠程擴展配置;這種配置所增加的機架可遠離當?shù)兀膸装倜祝h的可達數(shù)千米。遠程配置可簡化系統(tǒng)配線,而且也可擴大控制規(guī)模。
擴展配置時應著重弄清兩個問題:
①該型號PLC最大可能的擴展配置。顯然,充分利用最大可能的擴展配置,可降低PLC單點費用,提高使用PLC的經(jīng)濟性。
②I/O地址的分配規(guī)律。顯然,只有弄清了I/O地址是怎么分配的,才可能編寫PLC程序。
3)特殊配置。這里的特殊配置是指增加特殊(有的稱功能或智能模塊)I/O模塊的配置。特殊配置后的PLC可進行哪些方面的控制,與所配置的特殊單元緊密相關。目前,各PLC廠商已開發(fā)或正在開發(fā)越來越多的特殊單元,使PLC的控制能力越來越強。
較常見的特殊模塊,若按功能劃分,有:
高速計數(shù)單元:可計入與處理高頻脈沖信號,從處理幾十kHz,幾百kHz的都有。如果與旋轉(zhuǎn)編碼器配合使用,可測量與處理轉(zhuǎn)動或移動信號。
位置控制單元:可通過輸出脈沖控制位置移動量及位置移動速度。有單坐標控制的,還有雙坐標控制的,甚至于多坐標控制的。雙坐標或多坐標的還可實現(xiàn)兩坐標運動協(xié)調(diào)。這實際是數(shù)控技術通過PLC特殊單元予以實現(xiàn)。
模入、模出單元:可把傳感器模擬量轉(zhuǎn)換成數(shù)字量存于輸入通道中,或把輸出通道的內(nèi)容轉(zhuǎn)換成模擬量作為控制信號,可對一路信號作轉(zhuǎn)換,也可對多路的,可多達8路,甚至更多,即一個單元可處理8路或更多的模擬量。有的既有模入又有模出……
溫度檢測控制單元:溫度是工業(yè)中常見的模擬量。為檢測與控制它,PLC廠商開發(fā)專門針對它的檢測與控制的單元。實質(zhì)上它也是模擬量,只是它做了更多的預處理工作,如可適用不同的溫度傳感器,可測的溫度范圍也可相應選擇,用起來更方便。檢測單元只能用于讀溫度值,并顯示,也可用作處理,但要另編程序。而控制單元,可自成控制回路,無須編程,也無須PLC運行相關程序,即可實現(xiàn)溫度控制。
回路控制單元:用于進行模擬量的回路控制。有的自身帶模擬量輸入、輸出點。如上述溫度控制單元一樣,既能采集模擬量數(shù)據(jù),又能進行數(shù)據(jù)計算、處理,進而產(chǎn)生控制輸出,可完整地實現(xiàn)模擬量控制。而有的自身沒有模擬量輸入、輸出點,只用于進行有關控制算法計算。使用它,雖然須與別的模擬量輸入、輸出單元配合,但它的控制計算能力很強,可完成幾十、幾百路的有關控制運算,使PLC實現(xiàn)很復雜模擬量控制。
其他特殊單元:如計算機單元,可把有關個人計算機的主板、外設做成PLC的單元,插在底板上,可直接與PLC通信。再如ASCII單元,也具有運算與通信功能,可協(xié)助PLC的CPU作數(shù)據(jù)處理等。
更特殊配置算是多CPU配置,即一個PLC系統(tǒng)或機架中可配置多個CPU單元。這多個CPU可以是不同功能的,有的還可以是同一功能的。這些CPU單元共享系統(tǒng)I/O總線,但各控制各的I/O模塊或?qū)ο蟆M瑫r,各CPU間又可方便地交換數(shù)據(jù),進行控制協(xié)調(diào)。這樣系統(tǒng),將極大地提升PLC控制規(guī)模與功能,是目前大型PLC發(fā)展的新動向。
4)安全配置。是為了確保系統(tǒng)安全而進行的配置。可選用安全PLC,也可使用冗余配置。后者指的是除所需的模塊之外,還附加有多余模塊的配置。目的是提高系統(tǒng)的可靠性。能否進行冗余配置,可進行什么樣的冗余配置,代表著一種PLC適應特殊需要的能力,是高性能PLC的一個體現(xiàn)。一般的PLC是不具備有這個性能的。
冗余配置的目的是提高整個系統(tǒng)的可靠性。冗余配置為何能提高可靠性?這是因為PLC是由各種模塊組成的,而各模塊都有其統(tǒng)計出的可靠度及失效率。在PLC非冗余配置時,任一模塊出現(xiàn)故障,都會影響PLC工作。按若干獨立事件構(gòu)成的事件的概率計算原則,PLC的可靠度應為組成它的各模塊可靠度的乘積。即
R=R1·R2·R3…Rn
式中 R——PLC的可靠度;
R1~Rn——各模塊的可靠度。
如有10個模塊組成,各模塊的失效率(以規(guī)定壽命計)為萬分之一,則其可靠度為
1-1/10000=9999/10000
這10個模塊構(gòu)成的系統(tǒng)的可靠度近似為
(9999/10000)10≈999/1000
其失效率為1-999/1000=1/1000
若為100個模塊構(gòu)成的系統(tǒng),其失效率將為1/100。可知,系統(tǒng)越大,組成的模塊越多,出現(xiàn)故障的幾率也越大。
但若為冗余配置,情況就不同了。熱備也好,表決系統(tǒng)也好,必須至少有兩個模塊出現(xiàn)故障系統(tǒng)才不能工作。這兩個模塊同時出現(xiàn)故障這種獨立事件,構(gòu)成系統(tǒng)出故障的合成事件,其概率關系也是乘,只是失效率的乘。同樣以上例作討論,若這100個模塊均為熱備,或三選一,則只有在兩個相同的模塊同時出現(xiàn)故障時,系統(tǒng)才失效。其故障率的計算可先分別算出各模塊的失效率,再合成算PLC的可靠度。即
由于各模塊為熱備或三選一,兩個同時失效,模塊才失效。兩個模塊同時失效的幾率為(同樣以單模塊失效率為萬分之一計):
(1/10000)×(1/10000)=1/108
即億分之一的幾率。
再算PLC失效率的幾率為
1-(9999999/108)100≈1/1000000
為百萬分之一。確實是萬無一失。
當然,實際上不會所有的模塊都三取一或熱備,所以失效率會比這個大。
5)連網(wǎng)配置。為提高控制性能,往往要把在地理上處于不同位置的PLC與PLC,或PLC與計算機,或PLC與其他控制裝置或智能裝置通過傳送介質(zhì)連接起來,實現(xiàn)通信,以構(gòu)成功能更強、性能更好的控制系統(tǒng)。
目前PLC網(wǎng)絡大體有三個層次:設備網(wǎng),用以與底層的設備、智能傳感器、智能執(zhí)行機構(gòu)通信,以實現(xiàn)分布控制;控制網(wǎng),用以PLC與PLC間通信,已協(xié)調(diào)多PLC之間的控制;信息網(wǎng),用以與管理層的計算機通信,以至于進互聯(lián)網(wǎng),以實現(xiàn)控制的信息化。
要不要組網(wǎng),如何組網(wǎng),選用什么樣的通信模塊,是在配置PLC時要考慮的重要側(cè)面。連網(wǎng)是PLC技術發(fā)展中的活躍領域,內(nèi)容非常豐富,并不斷有新的技術及系統(tǒng)推出。
6)附加配置。附加配置是為PLC配備外部設備所作配置。目的是為PLC程序的編制、調(diào)試、存儲,以及數(shù)據(jù)的顯示、存儲及打印提供條件。
附加配置就是按需要選用這些外設,以使所配置的PLC系統(tǒng)合乎設計要求。
(3)系統(tǒng)配置方法。系統(tǒng)配置方法與配置類型有關。如不考慮網(wǎng)絡配置,可以用類比法、估算法、計算法及測試法。這四個方法不互相排斥,而是互相兼容與補充。為了正確地進行系統(tǒng)配置,這幾個方法可能都要用到。
1)類比法。類比法也就是經(jīng)驗法。用自己的或別人的經(jīng)驗與所要配置的系統(tǒng)作類比。從類比中初步確定要選用什么廠商的PLC,用什么型號,用哪些模塊等。
類比法雖不很準確,但由于有經(jīng)驗作借鑒,對一些較為簡單的系統(tǒng)倒是一種簡便的方法,既快又有把握。
當然,一些復雜的系統(tǒng),由于共同性少一些,不大好類比。但類比也仍可作粗略參考,特別可用以確定用什么廠商的PLC,什么類型的PLC。
要注意的是,在類比時一定要考慮PLC的發(fā)展,應使用新的機型替代舊機型。
2)估算法。估算法主要用于算I/O點數(shù),以粗略確定PLC的型別,用大型機、中型機、小型機還是微型機。因為機型與廠商有關,還與PLC的結(jié)構(gòu)相聯(lián)系,估算好了可較有把握地進行配置。
估算法首先算所需的I/O點數(shù)。I點數(shù)Ni為
式中 Ei——系統(tǒng)所使用的某類輸入器件的總數(shù),如用了5個按鈕,則為5;
Pi——該類器件可能處于的工作狀態(tài),如按鈕,一般處于按下與松開兩種狀態(tài)。再如多位開關,可處于多種狀態(tài);
I——輸入器件類型總數(shù)。
O點數(shù)No為
式中 Ei——所使用的某類輸出元件總數(shù);如用了一臺正、反轉(zhuǎn)電動機即為1;
Pi——該類輸出器件可能處于的工作狀態(tài),如電動機要求其正、反轉(zhuǎn)則有三種狀態(tài),即正轉(zhuǎn)、反轉(zhuǎn)及停車;
I——輸出器件的類型總數(shù)。
開關量總數(shù)N=Ni+No
另外,模擬量也要估算。有多少監(jiān)視量就有多少路輸入。有多少控制輸出,就有多少路輸出。比較好算。
估算出I/O點數(shù)及模擬量路數(shù)后,可依大、中、小型機劃分的大致標準,估算要選用的PLC機型。
一般大、中、小機型間點數(shù)均有搭接,沒有把握不妨都作考慮,再用計算法進一步確定。
3)計算法。它是估算的再精確一步。要確定用什么模塊,用多少模塊。一般要作四方面計算:
(a)模塊數(shù)計算。確定了I/O點數(shù),還要按I/O的物理要求,確定各用什么樣的模塊。
對輸入點,要依輸入信號電壓區(qū)分,是交流的,還是直流的?信號間有什么隔離要求?……
進而確定選用多少種,各有多少輸入點的模塊。
最后,再依總數(shù)具體計算應采用多少種,各多少個模塊。
對輸出模塊要考慮輸出形式,是繼電器,半導體,還是晶閘管?還有就是公共回路。一般點數(shù)多的模塊,其公共回路就少;反之則多。選用公共回路多的模塊便于電路配線,但要用的模塊多。
選定了模塊類型,再依I/O總數(shù)計算模塊數(shù)。
模擬量也有相應的模塊要選擇。如有的是4路入,或8路入,有的是2路出,或1路出,有的還有入,還有出,等等。選了合適的模塊之后,再根據(jù)總的路數(shù)計算模塊數(shù)。
I/O模塊數(shù)計算之后,再算要使用的機架槽位數(shù),進而確定機架數(shù)。
(b)電源容量計算。必要時,PLC電源容量也要作計算。箱體式的PLC,電源容量一般為自動滿足,可不考慮。只是在確定隔離變壓器(市電電源經(jīng)隔離變壓器再加載到PLC,以減少電網(wǎng)對PLC的干擾)時,對變壓器的容量要稍作計算。模塊式的電源種類較多,要作相應計算,然后再選型。
(c)響應時間計算。一般信號響應時間與PLC的循環(huán)時間有關,而循環(huán)時間與PLC的程序量有關。要計算,不大容易。沒有編好程序,怎么知道程序有多長?而且,同樣長的程序,用的指令不同,循環(huán)時間也不相同。當然,計算也可能,只是得放在編程之后。
有的PLC廠商提供有經(jīng)驗公式:大體的關系是內(nèi)存總量與要使用的點數(shù)有關,這既可用以確定選多大容量的內(nèi)存,也可大體確定循環(huán)時間。算出循環(huán)時間,就可進一步計算響應時間了。
特殊輸入量的響應時間更要分別計算。有的可查有關模塊的特性。
(d)投入費用計算。在模塊種類及數(shù)量確定后,一般還要依報價進行投入費用的計算。
如果配置的方案多,對每個方案的投入費用也都要計算。
費用計算精確有利于依經(jīng)濟性原則對系統(tǒng)進行配置。
4)測試法。系統(tǒng)配置時,一些重要的數(shù)據(jù)不僅要計算,有的還要進行實際測試。如循環(huán)時間,可把編完的程序,送入PLC進行實際測定。有的數(shù)據(jù)可由廠方提供,或委托廠方作測試。
類比、估算、計算及測試運用得好,可使所配置的系統(tǒng)建立在科學與經(jīng)驗的基礎之上,將有助于使系統(tǒng)配置得更為完善。
(4)系統(tǒng)配置步驟。系統(tǒng)配置是問題的綜合,與其他問題的綜合一樣,系統(tǒng)配置過程也是從粗到細一步步推進,要分步驟進行。一個配置完成后又可能再返回來,再逐步完善,直到從多個方案中挑選一個最為滿意的方案為止。
一般講,不考慮網(wǎng)絡配置,其配置步驟為
1)用類比法,大致確定可選用的廠商產(chǎn)品及機型;確定時要遵循發(fā)展性及繼承性原則。
2)用估算法,估算I/O點數(shù)及模擬量路數(shù),并確定要選用的機型。
3)用計算法,依完整性原則計算所需的模塊數(shù)。這里可能有多個方案,那就應計算出各個方案的結(jié)果。
4)再依可靠性原則,考慮必要的冷備份、熱備份或冗余配置。若為一般系統(tǒng),這個步驟可省略。
5)計算各個方案的投入費用,并依經(jīng)濟性原則選其中最優(yōu)者。
6)必要時再進一步做性能計算或進行實物測試。再根據(jù)計算或測試結(jié)果,對原有的配置做修正。
0.8.2 程序設計
這是使用PLC的另一個重要問題。因為PLC程序只能由用戶編制,廠商不提供。而PLC若沒有程序,則什么事情也不能干。以下分別對程序設計步驟及程序設計方法分別予以介紹。
(1)程序設計步驟
僅就單機系統(tǒng)而言,程序設計的步驟大體是:
1)弄清工藝。系統(tǒng)配置要弄清工藝,按工藝要求進行。程序設計則更應如此。弄清工藝,首先要弄清使用PLC的目的,要用到PLC的哪些功能。其次,要弄清兩方面情況:一為輸入、輸出部件的特性與分布,即系統(tǒng)的空間情況;另一為系統(tǒng)工藝過程,即系統(tǒng)的進程情況。
(a)空間情況。弄清各輸入部件性能的性能、特點,并分配相應的輸入點與其連接。分配時,既要考慮布線簡單,還要避免信號受外界干擾;弄清各輸出部件的性能、特點,分配相應的輸出點與其接線;如可能,接輸出部件的模塊最好能與輸入部件的模塊能適當隔開,以避免輸出信號對輸入的干擾;此外,還要考慮在編程時,地址使用的方便。弄清了這些,才便于合理地對其分配I/O地址。
(b)進程情況。弄清被控對象的工作要求、工藝過程及各種關系;弄清其工藝過程,看它是怎么開始的?怎么展開的?怎么終止的?弄清輸出與輸入的對應關系;如果存在時序關系時,兩者的時序是怎么對應的?弄清要采集、存儲、傳送哪些數(shù)據(jù)?弄清有哪些互鎖、聯(lián)鎖關系?有哪些特殊要求?……弄清這些問題才能著手設計算法,也才能進一步進行程序設計。
2)配置與設定硬件。為了PLC能按要求工作,在使用PLC之前,要對PLC的硬件作必要的配置與設定。如配置什么CPU及其他模塊。設定特殊模塊的機號、PLC上電時工作模式(是運行、監(jiān)控還是編程)等。有的廠商的PLC還可對PLC的內(nèi)部器件(如要使用多少定時器、計數(shù)器等)進行分配或指定。
PLC出廠時,廠商多有其默認設定。但對較復雜的系統(tǒng),用戶必須有合乎自己情況的設定。一般說,硬件設定在開始編程之前是必須進行的。
3)分配I/O。分配I/O指的是,給每一I/O模塊、每一輸入、輸出點,分配地址。這是編程所絕對必需的。
PLC I/O點在模塊上或在箱體的地址是固定的,在模塊或箱體上都有相應的地址標記。而模塊與箱體的地址(通道號)是按一定規(guī)律分配的。只是不同廠商、不同型號的PLC,有不同的規(guī)律。常見的規(guī)律有固定分配、定位分配、順序分配及設定分配。
固定分配是固定地分配地址。如歐姆龍公司的小型機就是固定分配,其主機的I/O地址與主機的點數(shù)有關。擴展箱體的I/O地址依遠離CPU箱體,升冪依次遞增。
定位分配是按模塊所在的機架及其在機架上的位置分配其I/O地址。模塊位置確定了,其I/O地址也就確定了。
順序分配是按模塊在PLC中位置順序,依次升冪分配I/O地址。依模塊點數(shù)的不同,有的占1個字(點數(shù)不足1個通道的,按1個字計算),有的占2個字,甚至更多。如歐姆龍公司的大型機就是這么編號的,如歐姆龍公司的CQM1機也是這么編號,只是它把I與O分開,分別按其順序進行排列。
設定分配是,在指定的范圍內(nèi),通過硬件或軟件設定,分配模塊I/O地址。如歐姆龍公司的特殊模塊,其所用的通道地址就是靠指定機號后設定的。其CJ1機可設定機架地址。
由于當今編程軟件的進步,一般都可用符號地址編程。這就有可能先用符號地址編程,編好后,再編輯符號與實際地址的對應關聯(lián)。這么做時,編寫程序可先做,而硬件設定、I/O分配后進行。但程序下載、調(diào)試前,這些工作都必須做好。
4)設計程序。首先是考慮程序的組織,可按功能,把程序先劃分成若干模塊(程序塊)。分模塊編程,然后再予以合成。按模塊編程便于移植一些已用過的程序,而且也便于調(diào)試。
其次,分塊設計算法。算法確定后,其思路可用框圖或一些自然語言表達。算法對工藝進程的分析中形成,是編寫程序的基礎與準備。
最后,按模塊選擇編程語言,逐一編寫指令。要一條條指令的編,若為梯形圖編程,則應一個圖形符號一個圖形符號的畫,最終要形成一個指令集,或完整的梯形圖。
5)調(diào)試程序。編寫PLC程序是很細致的工作,差錯總是難免的。而任何一點差錯,即使是一小點,都可能導致PLC工作出現(xiàn)故障。所以,編寫程序后,還要進行調(diào)試,糾正種種差錯。
調(diào)試程序可通過計算機仿真進行。多數(shù)公司現(xiàn)都有相應的仿真軟件,可運行在這軟件平臺上對所編的程序進行仿真調(diào)試。
多數(shù)的程序調(diào)試是把程序送入PLC,在PLC試運行(輸入、輸出不接傳感器及執(zhí)行機構(gòu))時作調(diào)試。這也叫在線調(diào)試。
在線調(diào)試可使用簡易編程器,先把程序送入PLC,然后分模塊或分指令一步步調(diào)。不過這種調(diào)試現(xiàn)在已不多見。
在線調(diào)試也可使用計算機,由相應軟件協(xié)助進行:先把在計算機用編程軟件編程,再下載到PLC;然后使PLC運行,通過計算機畫面或監(jiān)控的數(shù)據(jù),了解PLC運行情況,觀察其是否與設計意圖符合;不符合,則找出原因;再修改程序,剔除毛病;再試、再看、再找、再改。一直到合乎設計意圖為止。
經(jīng)在線調(diào)試的程序,還要在現(xiàn)場聯(lián)機調(diào)試。只有經(jīng)聯(lián)機調(diào)試合乎要求的程序,才是合格的、可交付用戶使用的程序。
6)存儲程序。把程序錄入計算機后,就要作存儲。甚至開始編程時,編一部分就要存儲一部分。隨著程序調(diào)試通過及試運行過程的不斷完善,還要不時地作存儲。存儲時,一般只留下后來的,刪去過去的。程序不僅存于PLC的RAM中,也可存入磁盤或磁帶中。
經(jīng)試行后的程序有的可作定型。辦法是把它固化,寫入ROM存儲器。
7)程序保護。可以用硬件,也可軟件保護。
硬件:有的PLC用硬件開關設置程序保護。讀寫DIP開關ON保護,否則,不保護。
軟件:有的用軟件設定保護,如歐姆龍CPM機是DM6602字的0位,設為1,保護,0不保護。
8)程序加密。程序保護可保證程序不被刪除或修改。但其他人可讀它,重用它。為了保護知識產(chǎn)權(quán),可對程序加密。
PLC程序加密的方法有:用指令加密;用編程軟件加密。可全程序加密,也可局部加密。
9)程序加鎖。除了程序保護、加密,還對程序可加鎖。可做到,即使PLC程序正常運行,但不產(chǎn)生控制輸出。加鎖可用置位PLC的輸出禁止位實現(xiàn),也可自編一段小程序,使相應的輸出禁止。
提示:程序保護,程序加密,程序加鎖是不同概念,各有各的目的。可按要求全用或用其中的一種。
這里,只是對PLC單機系統(tǒng)編程步驟作一最簡略的說明。至于詳細的介紹將是本書的主要任務。以下各個章節(jié),將對PLC編程的方方面面問題,逐一進行詳細討論。而網(wǎng)絡系統(tǒng)編程也將在本書第6章有所討論。
(2)程序設計方法
PLC編程方法很多。但歸納地講,主要是經(jīng)驗編程與算法編程。
1)經(jīng)驗編程。是運用自己的或別人的經(jīng)驗進行編程。多數(shù)是設計前先選“樣機”,并結(jié)合自己的情況,對“樣機”逐一修改,直至適合自己的情況。“樣機”多為與自己情況類似的一個或若干個成功的程序,也可為具有一些典型功能的標準程序。我們在工作過程中,可收集與積累這些“樣機”,從而不斷豐富自己的經(jīng)驗。
PLC編程,從“不懂”到“懂”,從“懂”到“會”,從“會”到“熟”,最后做到“熟能生巧”,關鍵還在于從實踐積累經(jīng)驗。沒有實踐,沒有經(jīng)驗的積累,怎么能進入“熟能生巧”的境地!
經(jīng)驗有別人的,也有自己的,都很重要。前者要靠細心學習,后者要靠用心積累。都要花一定的時間與必要的精力。
別人的經(jīng)驗有上了書的或登載在雜志上的。本書介紹的例子程序,有的是我細心學別人的,但多數(shù)是我自己的經(jīng)驗。所有的例子都經(jīng)我測試過,都經(jīng)實踐證明是可行的。我想,別的書本或雜志上介紹的經(jīng)驗也會是這樣的。所以,學習這樣成功的經(jīng)驗是必要的。
別人的經(jīng)驗還有沒有上書的或沒有登載在雜志上的,或許還是你同事的經(jīng)驗,也很值得學習。這種經(jīng)驗離你很“近”,很易借鑒。
自己的經(jīng)驗則是最重要的。要在自己的實踐中,積累自己的經(jīng)驗。同時,最好在學別人的經(jīng)驗時,也能親自做些測試,能使自己也有類似的經(jīng)歷,進而把這些經(jīng)驗變成自己的。這也是自己經(jīng)驗的重要積累。
還有一些失敗的經(jīng)驗,這往往是不會公開的,但這些經(jīng)驗也是要學習,也要積累。“失敗是成功之母”嘛。
經(jīng)驗的積累要用自己的腦記,更要用電腦記。最好進行分類,建立一個自用的程序“庫”,以便于隨時引用。
經(jīng)驗還有待升華。升華有三個層次:
最低的層次如上述,可建立一些典型程序集(庫),供今后再用。若程序較復雜,還可建一些功能塊或子程序,以便今后引用。
其次,要總結(jié)出有效算法。得出一些規(guī)律性的處理問題的方法。
最高層次的升華是,把經(jīng)驗上升到理論的高度,為豐富PLC編程理論做貢獻。我想,隨著PLC使用的普及與提高,是會有越來越多、從經(jīng)驗中升華出來的、而又能用以指導實踐的PLC的編程理論的。
經(jīng)驗積累、經(jīng)驗升華都是為應用。經(jīng)驗應用有三方面:
用作工程設計模板:設計新系統(tǒng)時,選用一個或幾個與現(xiàn)有工程類似的、已取得成功的工程,作樣板進行設計。這既可減輕設計的工作量,又增加設計的成功率。這也是信息可重用的一大好處。
用作編程參考:在無成功的工程可作樣板時,在新設計的邏輯中,仍有相當一部分控制邏輯,可采用或借用已有典型邏輯,這也可減少設計的工作量,增加設計的成功率。
用作算法設計參考:在既無樣板可參照,又無典型可采用時,還可運用過去的一些成功的算法。
經(jīng)驗是寶貴的,但是,經(jīng)驗,特別是個人經(jīng)驗,總是有限的。所以,經(jīng)驗的應用也還要與編程理論相結(jié)合。而本書所做的就是,結(jié)合個人積累的編程經(jīng)驗,做些編程理論及相關算法研究,為與讀者經(jīng)驗的結(jié)合提供參考。
2)算法編程。是針對問題先設計解決問題的算法,再根據(jù)所設計的算法編程。如果說經(jīng)驗編程用的主要是感性知識,那算法編程主要用的則是理性知識。要弄通相關的編程理論。否則這個算法也不好設計。
(a)算法(Algorithm)概念。它原是數(shù)學計算的名詞。在公元前200多年,歐幾里德根據(jù)自然數(shù)的理論,在他的《幾何原本》(Euclid′s Elements,第Ⅶ卷,命題i和ii)一書中,提出了求解兩個自然數(shù)最大公因數(shù)的“輾轉(zhuǎn)相除算法”,使得這個最大公因數(shù)的求解變得很容易了。這也說明算法對于解決問題的重要。
歐幾里德的這個算法(Euclid′s Algorithm),如用表達式表達,則是
算法還可用框圖表達。對上述算法如圖0-20所示。該圖中方塊表示“運算”,菱形表示“判斷”,連線及其箭頭表示“聯(lián)系與去向”。
算法也可用圖表表達。表0-1所示為上述算法圖表。該表列了5個步驟:第1步為求解開始,進行求“余數(shù)計算”。第2步為“判斷”,根據(jù)判斷結(jié)果分成2個走向,或求解結(jié)束,或繼續(xù)求解。顯然這個圖表也可清晰地反映上述求解過程。
算法也可用文字表達。上例可做如下表達:當求解開始后,先是求yy被xx整除,并把余數(shù)存于zz中。然后判斷zz是否為0?如等于0,則xx即為公因數(shù),運算結(jié)束;如不等于0,則xx賦值給yy,zz賦值給xx,并重復開始的步驟。
顯然,文字表達是不夠精煉的,特別是求解的問題較復雜時,更難以讓人理解。但也可使用比文字簡單的一些文字符號,也稱為偽代碼表達。則也很簡練。
圖0-20 求解公因數(shù)歐氏算法框圖
表0-1 求公因數(shù)算法圖表
當然,求這個最大公因數(shù)還可想出很多其他算法。但是無論如何,如果沒有算法,這個公因數(shù)是無法求得的。
那什么是算法?從上可知,算法是指解題的步驟。什么是好算法?就是步驟少,每一步的含義明確、運算簡單。運用它能夠從已知數(shù)求得未知的結(jié)果。
更一般地講,一個有效的、好的數(shù)學算法,一般有5個特征,即要有輸入(已知數(shù))、輸出(未知數(shù)),同時還要滿足有窮性、確切性、可行性。
PLC主要用于控制,還可用于運算。當然,為了控制也要運算。所以,PLC的運算是很多的。特別是邏輯運算更多。PLC編程就是編寫好的控制與運算程序,讓PLC一步步去執(zhí)行,以實現(xiàn)所要求的控制與運算。
顯然,這里的程序也有輸入、輸出,也要有窮性、確切性、可行性。具有算法的五大特征。
為了讓PLC進行上述求兩個正整數(shù)的最大公因數(shù)計算,如果用算法編程,那就要用程序去實現(xiàn)歐幾里德算法。
在本書一開頭,就講到,“入出信息變換、可靠物理實現(xiàn),可以說是PLC實現(xiàn)控制的兩個基本要點”。所以,在本質(zhì)上講,PLC只是輸入到輸出變換的工具。而輸入到輸出的變換是靠運行PLC程序?qū)崿F(xiàn)的。所以,從廣義上講,PLC程序也可說成,用PLC指令表達的PLC輸入到輸出變換的步驟。
簡而言之,對照數(shù)學算法,PLC的算法,則是用文字、公式、圖形表達的、實現(xiàn)輸入輸出變換的、有限的、明確的及可實現(xiàn)的步驟。
可知,PLC算法與PLC程序之間所差的只是表達方法的不同。算法可以說成是程序的原型、雛形、思路、提綱,而程序則是算法的成型、具體化及實現(xiàn)。
所以,一般講,設計程序前,要先設計算法。這正與寫文章一樣,在寫之前,一般要寫提綱、打腹稿,或構(gòu)想思路。
圖0-21所示為一個問題通過算法運用“computer”實現(xiàn)輸入到輸出的求解(轉(zhuǎn)換)示意。當然,對PLC這里的“computer”即為“PLC”了。
可知,算法指的就是告訴“computer”或“PLC”的“一系列解決問題的清晰指令”,這些“指令”“能夠?qū)Ψ弦欢ㄒ?guī)范的輸入,在有限的時間內(nèi)獲得所要求的輸出”。據(jù)講,在計算機出現(xiàn)前,這“computer”是泛指從事數(shù)學計算的人。現(xiàn)在計算機出現(xiàn)了,這里“computer”自然主要是計算機,而對本書講就是PLC了。
圖0-21 計算機算法應用示意
對于PLC,算法編程可分為兩個步驟:設計算法及實現(xiàn)算法。前者是為了探求解決問題的思路、方法或步驟;后者是為了運用PLC資源,編寫PLC程序。
(b)算法設計。數(shù)學算法設計有各種策略,常用的有窮舉搜索法、遞歸法、回溯法、貪心法、分治法等。PLC的算法設計與PLC要實現(xiàn)的功能有關,其策略不完全與數(shù)學算法相同。可使用的策略有:
從輸入推算到輸出:演繹法
從輸出反推到輸入:歸納法
化整為零:規(guī)模化大為小
動態(tài)規(guī)劃:步驟從多到少
模塊化設計:從頂?shù)降祝缮现料?/p>
……
對PLC算法則與PLC的應用有關。用于順序控制則有順序控制算法,用于模擬量控制,則有模擬量控制算法等。
算法設計是為了解決問題。解決問題是對問題的綜合,不像問題的分析,一個問題一般只有一個答案,而它可能有很多解決方案。
所以,算法設計除了尋找可能解決問題算法,還有個算法優(yōu)化問題。即怎樣用最少的步驟,最簡的操作,最好的效果去實現(xiàn)算法要達到的目的。
為此,需要對算法進行分析或評價。其主要依據(jù)是,算法的時間復雜度,空間復雜度。前者,主要看步驟多少及執(zhí)行各步驟的時間。后者,主要看算法預計要使用的硬件資源。顯然,所用的步驟越少,時間越短,使用的硬件資源越少,這個算法就越好。
PLC的算法必須針對實際,解決實際問題。因此,設計算法,必須了解實際情況(所謂有關工藝)以及有關處理實際問題的理論,否則算法設計也無從入手。試設想,上述求公因數(shù)的算法,如算術都不懂,何以有此算法?
本書以后各章的內(nèi)容,主要也就是研究實際應用的種種算法,并且還要探討怎樣用目前國內(nèi)最常用的PLC去實現(xiàn)這些算法。
(c)算法實現(xiàn)。對PLC編程,有了算法,還要編成PLC的程序,PLC才能執(zhí)行這個算法。這也就是算法實現(xiàn)。它涉及問題有,指令選用及資源利用。
a)指令選用。這與PLC編程語言的選擇、編程軟件或編程工具的使用及具體用什么廠商的PLC,以及什么樣的PLC密切相關。
至于具體選用什么指令,應做到先用、多用高效率、執(zhí)行時間短的指令。多用子程序、跳轉(zhuǎn)、步進指令等。以使所編的程序具備比較簡練,運行時間短,程序的可讀性好等優(yōu)點。
b)資源利用。涉及I/O分配及內(nèi)部器件,如定時器、計數(shù)器、存儲器的運用。I/O分配除了考慮實現(xiàn)算法的方便,還要考慮硬件接線,及防止輸入信號受干擾。
一般講,PLC的內(nèi)部器件是足夠多的,但也要運用得當,要有規(guī)律性,便于理解、便于查找、便于更換等。
提示:算法的實現(xiàn)也是問題的綜合。同樣的算法,實現(xiàn)它的程序可以很多。所以,對程序評價,除了評價它的算法,還要評價算法實現(xiàn)。