張 磊 磊
(雅礱江流域水電開發(fā)有限公司,四川 成都 610051)
常規(guī)水電站機組技術(shù)供水系統(tǒng)用戶主要包括水導(dǎo)軸承、推力、下導(dǎo)軸承、上導(dǎo)軸承、發(fā)電機空冷器及主軸工作密封等。技術(shù)供水程序設(shè)計時一般以水泵出口壓力和排水總管流量作為控制量。當(dāng)壓力或流量降低至設(shè)定值時進行泵組切換。若切換后壓力流量仍不滿足要求,則兩臺或多臺泵組同時運行,以滿足設(shè)備運行需要。常規(guī)水電站油氣水系統(tǒng)等輔助具有一定的通用性,其控制邏輯和程序也同樣如此,相互之間可以借鑒。本文以某電站技術(shù)供水系統(tǒng)控制程序為例,提出了控制程序模塊化設(shè)計的意義。
某電站技術(shù)供水系統(tǒng)包括頂蓋取水方式和水泵尾水取水方式。頂蓋取水方式與水泵取水方式通過三通閥相連。三通閥排水位置以頂蓋取水方式退出,供水位置頂蓋以取水方式投入。同時,頂蓋取水管上還設(shè)計了輔助泄壓管,當(dāng)管路壓力過高時進行泄壓。此外,供水管路上還設(shè)計了四通閥實現(xiàn)管路正反向供水切換。
控制部分系統(tǒng)主要采集了出水總管的壓力、流量及頂蓋泄壓管泄壓閥前壓力。水泵供水時,當(dāng)管路壓力和流量低于設(shè)定值時,輪換另外一臺泵,同時兩臺水泵會定期輪換。頂蓋取水時,當(dāng)泄壓閥前管路壓力高于設(shè)定值時,泄壓旁路電動閥打開。當(dāng)供水總管壓力和流量不滿足要求時,運行方式切換為水泵供水,期間涉及到三通閥的關(guān)閉控制。
為了將程序模塊化、流程化,便于其他系統(tǒng)移植,技術(shù)供水系統(tǒng)控制程序?qū)⒆兞恳策M行了模塊化設(shè)計。程序中定義了4個結(jié)構(gòu)數(shù)據(jù)類型,分別是模擬量定值結(jié)構(gòu)(AI_LIMITS)、水泵參數(shù)結(jié)構(gòu)(PUMP_STR)、觸摸屏設(shè)定結(jié)構(gòu)(SETTING_STR)和時間統(tǒng)計結(jié)構(gòu)(TIME_COUNT_STR)。以水泵結(jié)構(gòu)參數(shù)為例,其導(dǎo)出的數(shù)據(jù)類型見表1。
表1 水泵結(jié)構(gòu)參數(shù)
變量定義時,利用以上導(dǎo)出結(jié)構(gòu)類型定義了一個包括5臺水泵結(jié)構(gòu)參數(shù)的數(shù)組,數(shù)組元素的類型即是上述導(dǎo)出的結(jié)構(gòu)類型。無論被控制設(shè)備是2臺還是2臺以上,相關(guān)內(nèi)容可以直接移植,按需使用(見表2)。
表2 5臺水泵結(jié)構(gòu)參數(shù)的數(shù)組
程序設(shè)計部分包括主程序MAIN、IO-SCAN函數(shù)以及各類子程序程序,結(jié)構(gòu)見圖1,程序的控制主要流程見圖2。
圖1 主程序MAIN、IO-SCAN函數(shù)以及各類子程序
主程序MAIN函數(shù)根據(jù)不同的控制需要,按照不同的循環(huán)周期對子函數(shù)進行調(diào)用。如模擬量采樣AI_PROC函數(shù),每1 s調(diào)用一次,輸出函數(shù)OUTPUT每100 ms調(diào)用一次,狀態(tài)監(jiān)視函數(shù)則是一直調(diào)用。這樣處理既能滿足系統(tǒng)控制要求,又能很好節(jié)省CPU內(nèi)存和處理時間。
子程序中主要包含了初始化程序INIT、狀態(tài)判斷STATUS、啟泵PUMP_START、停泵PUMP_STOP、四通閥控制STF_CONTROL等程序。
初始化程序INIT很重要,特別是對于系統(tǒng)設(shè)定值來源于觸摸屏的控制系統(tǒng),如果不在INIT程序中將原始值寫入CPU內(nèi)部寄存器,那么在系統(tǒng)掉電重啟的情況下,相關(guān)參數(shù)可能丟失。技術(shù)供水系統(tǒng)INIT函數(shù)中主要對主泵的號數(shù)、水泵臺數(shù)、運行狀態(tài)所在的點號、水泵的啟動步驟號、流量低定值和壓力低定值進行了初始化,防止系統(tǒng)啟動后的混亂。
狀態(tài)判斷STATUS程序主要是判斷水泵是否存在故障、水泵是否需要輪換、技術(shù)供水方式的選擇、水泵運行時間統(tǒng)計,并根據(jù)狀態(tài)判斷開出水泵啟動或輪換信號,最終輸出啟泵PUMP_START中變量PUMP_START_STEP[START_MAIN_PUMP_NO]的值。
啟泵PUMP_START程序則利用CASE OF函數(shù),對設(shè)備進行順控,CASE函數(shù)主要包括5個標(biāo)簽:
1:PUMP[START_MAIN_PUMP_NO].STARTING:=1;(*置主泵正在啟動標(biāo)志*)
IF DI[45]THEN(*機組頂蓋取水三通閥處排水位置*)
PUMP_START_STEP[START_MAIN_PUMP_NO]:=3;
(*機組頂蓋取水三通閥處排水位置,直接起泵*)
ELSE
OUT[5]:=5000;(*機組頂蓋取水三通閥正轉(zhuǎn)*)
PUMP_START_STEP[START_MAIN_PUMP_NO]:=2;
END_IF;
2:PUMP_KON(IN1:= DI[45],PT1:=T#180S);
IF PUMP_KON.Q1 THEN
PUMP_START_STEP[START_MAIN_PUMP_NO]:=3;
END_IF;
IF PUMP_KON.Q2 THEN
PUMP[START_MAIN_PUMP_NO].STARTING:=0;(*清主泵正在啟動標(biāo)志*)
PUMP_START_STEP[START_MAIN_PUMP_NO]:=1;
OUT[(START_MAIN_PUMP_NO-1)*2+1]:=0;(*開啟泵脈沖清0*)
END_IF;
3:OUT[(START_MAIN_PUMP_NO-1)*2+1]:=5000;(*起泵*)
PUMP_START_STEP[START_MAIN_PUMP_NO]:=4;
4:PUMP_KON(IN1:=0,PT1:=T#20S);
IF PUMP_KON.Q2 THEN
PUMP_START_STEP[START_MAIN_PUMP_NO]:=5;
END_IF;
5:(*檢測兩組泵運行信號*)
PUMP_KON(IN1:=(DI[(START_MAIN_PUMP_NO-1)*6+4]),PT1:=T#50S);
IF PUMP_KON.Q1 THEN(*啟動成功*)
PUMP[START_MAIN_PUMP_NO].STARTING:=0;
PUMP_START_STEP[START_MAIN_PUMP_NO]:=1;
END_IF;
IF PUMP_KON.Q2 THEN(*啟動失敗*)
IF NOT DI[(START_MAIN_PUMP_NO-1)*6+4]THEN(*泵啟動異常*)
PUMP[START_MAIN_PUMP_NO].FAULT_CODE:=4;(*故障碼*)
END_IF;
PUMP[START_MAIN_PUMP_NO].STARTING:=0;(*清主泵正在啟動標(biāo)志*)
PUMP_START_STEP[START_MAIN_PUMP_NO]:=1;
OUT[(START_MAIN_PUMP_NO-1)*2+1]:=0;(*開啟泵脈沖清0*)
END_IF;
啟泵程序中,首先判斷三通閥是否處于排水位置,如果處于排水位置則直接啟泵,即將泵啟動步驟號賦值為3,執(zhí)行CASE中的第三個標(biāo)簽。若三通閥處于供水位置,則即將泵啟動步驟號賦值為2,執(zhí)行CASE中的第2個標(biāo)簽,開啟三通閥。標(biāo)簽4則是延時20 s后轉(zhuǎn)到標(biāo)簽5,判斷泵是否啟動成功,并根據(jù)結(jié)果做相應(yīng)處理。
在上述程序設(shè)計中,相關(guān)變量并未明確,如PUMP[START_MAIN_PUMP_NO].STARTING中的START_MAIN_PUMP_NO值是通過其他子程序進行判斷的,無論系統(tǒng)有幾臺控制或輪換設(shè)備,啟泵程序只需要這一段,不需要針對不同的主泵號重復(fù)編寫程序,效率得到了明顯提高。
技術(shù)供水系統(tǒng)控制程序涉及到多個設(shè)備,并且各設(shè)備運行狀態(tài)和啟動流程具有一定的先后關(guān)系,可以采用CASE函數(shù)對程序步驟化,且邏輯比較清晰。但對于不涉及多個設(shè)備的控制系統(tǒng)若采用這種結(jié)構(gòu),反而顯得累贅。
水電站涉及的油水氣系統(tǒng)眾多,如果能做到程序化設(shè)計或直接將類似產(chǎn)品通用控制部分做成功能塊,則對系統(tǒng)移植是有幫助的,能夠提高現(xiàn)場工作效率。
隨著模塊化設(shè)計運用時間積累,當(dāng)系統(tǒng)存在的問題逐漸暴露后,模塊化設(shè)計的錯誤率會越來越低,通用性則越來越強,可以極大縮短新建廠站設(shè)備的設(shè)計和調(diào)試時間,并產(chǎn)生顯著經(jīng)濟效益。
文章通過某電站技術(shù)供水系統(tǒng)控制程序的設(shè)計,運用結(jié)構(gòu)化變量實現(xiàn)了多泵組參數(shù)的快速定義。主程序?qū)Χ嗯_泵組的啟動優(yōu)先順序進行排序,利用順控程序?qū)崿F(xiàn)各臺泵組的啟停。程序的控制邏輯是針對某一特征條件,而非具體的某一泵組,因此,無需針對各泵組重復(fù)設(shè)計控制程序。本設(shè)計實現(xiàn)了程序的模塊化,使程序更加緊湊,邏輯更加清晰;通過對某電站技術(shù)供水系統(tǒng)控制程序的設(shè)計分析,提出了其程序設(shè)計存在的一些優(yōu)勢,說明了程序化、模塊化、流程化程序設(shè)計存在的意義。
(1)因程序的模塊化設(shè)計,在設(shè)備調(diào)試過程中可以快速發(fā)現(xiàn)程序中存在的問題和不合理之處,只需一次修改就可實現(xiàn)同類問題的一次性處理,相比于針對各泵組重復(fù)設(shè)計的控制程序,具有便捷性。
(2)通過本文的解析,輔助設(shè)備控制程序的模塊流程化設(shè)計,對水電站及其他工業(yè)系統(tǒng)中常用的輔助設(shè)備均是通用的。如水電站的中低壓氣系統(tǒng)、廠房的排水系統(tǒng)、機組油壓裝置的液壓油泵控制系統(tǒng)、水廠的水泵取水系統(tǒng)等,各系統(tǒng)涉及的控制變量和設(shè)備的啟停及輪換具有相似性,模塊化設(shè)計程序在相關(guān)系統(tǒng)中均可根據(jù)需要進行移植。
(3)設(shè)備的控制程序應(yīng)在使用中不斷完善,以最精簡的語句實現(xiàn)程序所需的功能。類似設(shè)備的控制程序模塊化設(shè)計經(jīng)過使用驗證,應(yīng)實現(xiàn)程序的固化,不斷積累某一類工程的源程序。新用戶只需在源程序中進行選擇和適當(dāng)修改便可使用,并將通用程序功能塊化,降低人力物力,提高生產(chǎn)效率。