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