周國棟,趙錦輝(.上海市機械設(shè)備成套(集團(tuán))有限公司,上海 000;.江蘇優(yōu)聯(lián)環(huán)境發(fā)展有限公司,江蘇 南通 6000)
結(jié)構(gòu)化編程在PLC程序設(shè)計中的應(yīng)用
周國棟1,趙錦輝2
(1.上海市機械設(shè)備成套(集團(tuán))有限公司,上海200120;2.江蘇優(yōu)聯(lián)環(huán)境發(fā)展有限公司,江蘇南通226000)
摘要:本文比較了常見的PLC程序設(shè)計方法,并結(jié)合給排水行業(yè)的工藝特點,介紹了結(jié)構(gòu)化編程方法在給排水行業(yè)的應(yīng)用實例,該方法具有編程調(diào)試簡便,易于擴(kuò)展,移植性好等特點。
關(guān)鍵詞:PLC;結(jié)構(gòu)化;給排水
隨著現(xiàn)代工業(yè)發(fā)展進(jìn)程的不斷加快,工業(yè)自動化控制技術(shù)發(fā)揮著越來越大的作用,PLC控制系統(tǒng)的應(yīng)用也日益廣泛。PLC程序設(shè)計的水平優(yōu)劣往往決定著工程能否及時竣工投產(chǎn),工業(yè)設(shè)備能否充分發(fā)揮其設(shè)計生產(chǎn)能力。傳統(tǒng)的PLC編程方式程序繁瑣冗長,結(jié)構(gòu)不清晰,不利于控制程序在多個項目中的重復(fù)使用。如何迅速、優(yōu)質(zhì)地編制符合不同設(shè)備工藝特點,參數(shù)的PLC程序,對工業(yè)控制系統(tǒng)的及時完工,提高自動化控制水平具有較大的意義。本文結(jié)合給排水行業(yè)常用設(shè)備及工藝程序的編寫,對結(jié)構(gòu)化編程在PLC中的應(yīng)用進(jìn)行了初步的探索,取得了較理想的效果。
常見的程序設(shè)計方法分為三種:線性化方法、模塊化方法以及結(jié)構(gòu)化方法[1]。
線性化編程方法:將所有的程序代碼全部放在一個程序塊中,如對S7-300/400來說,在OB1中寫入數(shù)據(jù)采集、設(shè)備控制、臺時統(tǒng)計等全部用戶程序。該方法與PLC所代替的繼電器控制電路類似,系統(tǒng)按照順序處理各條指令。它適用于小型設(shè)備配套PLC的編程,對于大中型項目則顯得程序結(jié)構(gòu)不清晰,同時由于需要對不同設(shè)備編制大量類似的代碼,導(dǎo)致代碼冗長,難以調(diào)試和維護(hù)。
模塊化編程方法:將程序根據(jù)不同功能需求分成不同的塊,每個功能的控制指令在各自的塊內(nèi),OB1按順序調(diào)用每個塊。該方法程序結(jié)構(gòu)清晰,便于調(diào)試和維護(hù),但僅將功能按塊分配,加以有條件的調(diào)用,故雖然CPU效率得到提高,但代碼冗長、調(diào)試?yán)щy的缺點未得到明顯改善。
結(jié)構(gòu)化編程方法:將復(fù)雜的自動化任務(wù)分割成過程相關(guān)的功能或可多次處理的小任務(wù),以提供可以用于類似任務(wù)的通用的程序代碼,這樣更易于控制復(fù)雜任務(wù)。而這些小任務(wù)以相應(yīng)的程序段表示,稱為塊。只需要在調(diào)用程序塊時針對不同的設(shè)備和工藝流程代入不同的參數(shù)或地址,即可實現(xiàn)不同設(shè)備的控制,無須多處重復(fù)輸入相同功能的代碼。當(dāng)需要對功能進(jìn)行修改時只需要修改程序塊即可,提高了編程的效率和可靠性。
在實際應(yīng)用中,在對給排水行業(yè)通用設(shè)備和工藝進(jìn)行詳細(xì)分析的基礎(chǔ)上,針對典型設(shè)備和工藝分別編制了水泵、儀表、閥門、泵站水泵調(diào)度、自動加藥等不同的控制模塊,使高效開發(fā)PLC程序在給排水行業(yè)的應(yīng)用成為可能。下面以變頻水泵及泵站的水泵調(diào)度為例來介紹結(jié)構(gòu)化編程方法。
3.1變頻水泵功能塊
變頻水泵是給排水行業(yè)最常見的設(shè)備,其調(diào)用如圖2所示。
圖2為變頻水泵控制塊的調(diào)用實例,該FB的輸入輸出參數(shù)如圖3示。
功能塊接口參數(shù)共分為三種類型:輸入(INPUT);輸出(OUTPUT);輸入輸出(IN_ OUT)。其中輸入?yún)?shù)主要有:遠(yuǎn)程信號,上電信號,運行信號,水泵故障,電回路故障,變頻器故障,頻率輸入等;輸出參數(shù)主要有:開停控制,頻率控制輸出,實際運行頻率等;輸入輸出類型參數(shù)主要有:變頻電機狀態(tài),變頻電機控制命令,電機臺時及開停次數(shù)統(tǒng)計,頻率設(shè)定值等。
輸入輸出類型參數(shù)可由人工或自控程序在功能塊外部進(jìn)行賦值,也可由本功能塊內(nèi)部邏輯進(jìn)行修改。其中的State、Command等參數(shù)均為WORD類型,其每一位分別代表了不同的含義。
該功能塊包含了除電流外的變頻水泵常見的絕大部分信號處理及控制功能,對于部分實際工程中未使用的參數(shù),可通過直接設(shè)置默認(rèn)值或空置的方式進(jìn)行處理。水泵電流可通過專門的模擬量處理程序塊進(jìn)行數(shù)據(jù)轉(zhuǎn)換和上下限報警判斷,當(dāng)電流超過上下限設(shè)定值時發(fā)出報警信號(過流、欠流)傳送給變頻水泵功能塊,從而實現(xiàn)水泵的電流超限保護(hù)功能。
3.2泵站水泵調(diào)度功能塊
污水廠一般具有進(jìn)水泵房、中間提升泵站、出水泵房等工藝段,其水泵控制模式基本相同,都是根據(jù)液位的變化來調(diào)節(jié)運行的水泵頻率和臺數(shù),調(diào)泵時又要考慮單臺設(shè)備的運行臺時和啟停間隔等因素。其基本原理介紹如下:
泵站的液位控制一般采用根據(jù)液位分段啟停泵的模式,不同的液位分別對應(yīng)當(dāng)前需要開泵的臺數(shù),同時具備死區(qū)保護(hù)功能,停泵液位設(shè)定值比啟泵液位設(shè)定值略低,以防止特殊情況下水泵的頻繁啟停[2]。
水泵的啟停選擇需要考慮以下幾個條件:
(1)熱備狀態(tài)。PLC首先檢測水泵上電情況,遠(yuǎn)程狀態(tài),控制模式,故障情況等,當(dāng)以上條件均滿足時認(rèn)為該泵處于熱備狀態(tài),可被自控程序進(jìn)行開停調(diào)度。
(2)平衡調(diào)泵。累計運行時間最短的泵優(yōu)先被啟動,運行時間最長的泵優(yōu)先停止,使每臺泵運轉(zhuǎn)時間大致相等。當(dāng)運行時間相同時,按泵的順序啟停。
(3)啟動間隔保護(hù)。控制程序使每一臺泵每小時起動次數(shù)少于6次,兩次起動間隔≥10分鐘,且不論何種情況,不同時起動2臺及2臺以上水泵。
在實際應(yīng)用中,根據(jù)分段啟泵原理以及低水位保護(hù)等條件編制泵站自控功能塊,計算當(dāng)前需要開泵臺數(shù)。根據(jù)上述三條件,編制了水泵啟停調(diào)度選擇功能塊,用于選擇當(dāng)前需要啟動的水泵編號。兩功能塊配套使用,可快速完成泵站自動調(diào)泵程序的編制工作。限于篇幅,本處不再詳述其具體實現(xiàn)過程。
(1)對于實際項目,我們往往采用模塊化編程與結(jié)構(gòu)化編程相結(jié)合的方式來實現(xiàn)。首先將項目根據(jù)不同工藝段分為不同的任務(wù)模塊,在每個任務(wù)模塊中再采用結(jié)構(gòu)化的編程方法來實現(xiàn)具體設(shè)備的控制、數(shù)據(jù)分析統(tǒng)計以及工藝控制程序等功能。具體對于西門子STEP7編程軟件來說,我們通常使用FC來實現(xiàn)不同工藝段設(shè)備的控制,而每個FC中的具體設(shè)備的控制程序再通過調(diào)用FB來實現(xiàn)。
(2)具體設(shè)備控制功能塊的規(guī)劃以完成單一功能為主,避免出現(xiàn)將大量功能堆砌在同一功能塊中的情況。如上述變頻水泵功能塊,完成設(shè)備狀態(tài)分析、控制及軟故障判斷等基本功能即可,其余可能需要的功能如電流,溫度的檢測及故障聯(lián)鎖停泵等功能可在通用的模擬量塊中進(jìn)行處理,將最終輸出的停機信號等傳遞給水泵功能塊即可,無須全部加入到水泵功能塊中,避免了重復(fù)代碼,結(jié)構(gòu)更加清晰,同時也更便于維護(hù)。
(3)建議采用SCL語言來完成PLC程序模塊的編制,并且在編程時盡量采用標(biāo)準(zhǔn)化的,而非西門子特有的指令,對于程序的移植很有好處。如西門子的SCL語言與施耐德、Rockwell等品牌PLC的ST語言(Structured Text)類似,都是類PASCAL語言,符合IEC61131-3國際標(biāo)準(zhǔn),當(dāng)移植到相關(guān)的編程環(huán)境時,只需要進(jìn)行少量修改即可使用[3]。
(4)可以根據(jù)工程逐步積累,開發(fā)相關(guān)行業(yè)的程序庫,從而加快相關(guān)工程的開發(fā)進(jìn)度。程序庫中的程序模塊可重復(fù)使用,成為下一個項目的寶貴資源,同時可以通過加密方式對程序塊進(jìn)行保護(hù)。
本文結(jié)合PLC編程的特點,采用結(jié)構(gòu)化編程思想,將常見的設(shè)備以及相關(guān)工藝控制流程封裝為程序塊,加以調(diào)用,各單個任務(wù)塊的創(chuàng)建和測試可以相互獨立地進(jìn)行。通過使用參數(shù),可將塊設(shè)計得十分靈活,實際應(yīng)用時只需保證現(xiàn)場信號的正確性并對調(diào)用接口進(jìn)行測試即可完成調(diào)試工作,大大減少了調(diào)試工作量,提高了程序編制和調(diào)試效率,同時采用該方法編制程序不易出錯,有效保證了程序的可靠性。同時該方法具有了面向?qū)ο蟮牟糠痔攸c,當(dāng)需要擴(kuò)展部分功能時,只需對原功能模塊進(jìn)行繼承,派生出新的控制程序模塊,具有較強的靈活性。
參考文獻(xiàn):
[1]西門子(中國)有限公司.STEP7編程手冊[K].2010.
[2]王明軍.基于PLC的污水泵站自動控制系統(tǒng)[J].自動化技術(shù)與應(yīng)用,2010(05).
[3]HansBerger著,張同莊,方榮惠,伍小杰,鄧先明譯.西門子S7-300/400PLC編程--語句表和結(jié)構(gòu)化控制語言描述(第3版)[M].北京:人民郵電出版社,2008.
作者簡介:周國棟(1973—),男,江蘇南通人,工程碩士,工程師,研究方向:工業(yè)自動化。