張 強, 高 升, 郭 榮, 汪 勇
(上海發電設備成套設計研究院有限責任公司,上海 200240)
隨著全球電力市場的發展,電廠需要更高的可靠性、靈活性和可維護性以及更低的度電成本,電廠智慧化、實現高等級具有自主認知的智能化系統是應對市場挑戰的重要關注方向。
現代計算機操作系統是所有智能化系統實現的基礎,是高端裝備領域的關鍵“卡脖子”技術,作為電廠分散控制系統底層最基礎的計算機軟件,具有快速可靠吞吐能力的智能操作系統極其重要,是整個智慧能源產業鏈和創新鏈的“中樞”,采用操作系統理念進行電廠智慧化項目的設計、部署與實施,支撐發電領域的數字化轉型升級,蘊含巨大的商業價值。
Chmiel等[1]提出了具有 Cortex M3 內核的 MCS-51、AVR 和 ARM 等典型微控制器開發的可編程邏輯控制器的架構方案,嵌入式操作系統調度 CPU 運行建立了符合 IEC-61131-3 標準建議的指令列表(IL) 語言開發控制環境。Patel 等[2]針對物聯網異構智能設備和傳感器的連接,考慮內存、計算和能量方面的約束環境,對不同的操作系統進行深入選型分析,從開發人員的角度分析和討論了編程語言和應用領域的關鍵偏好水平,以提供進一步的研究方向。Wang等[3]采用龍芯3A3000處理器搭建開放式運動控制器。龍芯系列處理器是中國科學院計算技術研究所研制的國產通用處理器,其采用MIPS指令系統,控制器的通信模塊采用EtherCAT實時以太網,具有效率高、拓撲靈活、刷新周期短等特點,為我國基于國產CPU龍芯的開放式運動控制器自主創新提供了典型案例。
當前針對電廠分散控制系統(DCS)的研究,一方面側重上述底層實時計算機操作系統如何調度核心板卡上的CPU、存儲器、內外部IO和總線等電子器件,以滿足工業現場的高可靠性、安全性、響應能力和智能化的要求;另一方面的研究則擴展到了以分散控制系統控制器為依托的智慧電廠技術路線、框架、架構、概念與特征等[4],也有提出智慧能源及其操作系統的理念,智慧電廠或智慧能源的頂層設計逐漸完善[5-6],但以控制器設備映射區驅動級智能調度為操作對象的研究還較少,而是按照設定順序進行設備啟停、備用,造成電廠數字化項目的智慧化程度提升有限。歐美地區許多業主和設計院對控制環境下通過調度設備映射驅動級來進行現場設備控制的要求已成體系化、模式化,而我國發電廠的大多數智能化項目僅在III區部署實施,尚未形成有效控制閉環,對設備調度算法上升為操作系統理論和實踐的研究更是鮮有報道。
筆者不針對控制器內部直接調度嵌入式計算機硬件的Linux-RT、Vxworks等實時操作系統,而是以IEC61131-3標準控制系統組態環境上層映射區內現場設備驅動級作為可調度資源,采用進程調度、隊列循環等算法構造電廠設備映射區驅動級智能調度操作系統,并在海外2個控制要求較苛刻的項目現場進行了組態實施,取得了不錯的應用效果。
計算機是一個復雜系統,由一個或多個處理器、內存、磁盤、鍵盤、鼠標、顯示器、打印機、網絡接口以及各種其他I/O設備組成[7-8]。計算機操作系統可以管理這些部件并加以優化使用。在概念上,一臺計算機可以抽象為圖1(a)中的模型,CPU、內存、以及I/O設備都由一條總線連接起來并通過總線與其他設備通信,操作系統實現了資源優化調度。

(a) 計算機概念模型
電廠系統由多個DCS控制器、鍋爐、汽輪機、發電機、閥門、泵和風機等復雜設備組成。為了管理這些設備,從概念上來說,電廠或能源場站的一些管道或資源共享場景也可以抽象為圖1(b)的模型,沿用計算機操作系統相關手段和方案進行如下自動化操作:
(1) 互斥模型操作系統。如果設備間對資源的占用處于互斥狀態,可以采用操作系統進程調度的概念實現并列設備多任務的高度自動化調度。
(2) 非互斥模型操作系統。如果設備之間的關系是非互斥且互為備用,共享管道資源,可以通過操作系統循環隊列算法模型,實現電廠設備資源的優化調度,充分挖掘和利用設備集群的備用潛力,有助于提高發電廠智慧化和狀態檢修水平。
現代操作系統的核心概念是進程,操作系統的基本功能是創建、管理和終止進程,也就是說操作系統的所有工作都圍繞進程展開。當進程處于活躍狀態時,操作系統必須設法使每個進程都分配到處理器執行實踐,并協調進程活動,管理有沖突的請求,給進程分配系統資源。
要執行進程管理功能,操作系統必須維護每個進程的描述,包括執行進程的地址空間和一個進程控制塊。進程控制塊含有操作系統管理進程需要的全部信息,包括進程的當前狀態、分配給進程的資源、優先級和其他相關數據。
在整個生命周期內,進程總是在以下5種狀態之間轉換:
(1) 運行態,表示進程正在執行,如果計算機有一個處理器,那么一次最多只有一個進程處于該狀態。
(2) 就緒態,表示進程做好了準備,只要有機會就開始執行。
(3) 阻塞/等待態,進程在某些事件發生前不能執行,如I/O操作完成。
(4) 新建態,表示剛剛創建的進程。
(5) 退出態,表示操作系統從可執行進程組釋放出的進程。
為了方便進程的調度,操作系統把所有可運行的進程(包括就緒態和運行態的進程)組織成一個可運行進程隊列,操作系統通過當前游標指針來區別就緒態和運行態。例如當操作系統內核要尋找一個在處理器上運行的新進程時,必須只考慮處于可運行狀態的進程,需要引入可運行狀態進程的雙向循環鏈表結構,也就是操作系統的運行隊列表,從雙向循環鏈表中任意一個點開始,都可以訪問其前驅結點和后繼結點,方便了隊列元素的增加、刪除等操作。
為了證明計算機操作系統進程、隊列等調度算法在電廠智能化項目的可行性和適用性,筆者分別選取了電廠循環流化床(CFB)鍋爐飛灰島和原水站作為典型設備映射區調度操作系統實時自動控制的應用場景,區別于嵌入式計算機硬件上運行的實時操作系統,該映射區調度操作系統的運行環境如圖2所示。

圖2 設備映射區驅動級操作系統與實時操作系統的區別與聯系
以電廠CFB鍋爐飛灰島倉泵組作為調度對象,開發互斥設備驅動級操作系統。CFB鍋爐運行過程中會產生大量飛灰,其飛灰含碳量高是最常見的問題,目前大多數CFB鍋爐的飛灰含碳量在10%~20%,少數CFB鍋爐高達30%以上,這極大地降低了CFB鍋爐的燃燒效率[9-10]。
2.1.1 CFB鍋爐飛灰島配置
飛灰輸送系統由倉泵、飛灰倉、再循環灰倉、飛灰流切換閥門及其管道構成,如圖3所示。

11、21、31、41—各倉泵進料閥;12、22、32、42—各倉泵排氣閥;13、23、33、43—各倉泵加壓閥;14、24、34、44—各倉泵出料閥;51—電除塵1號電場助吹閥;52—電除塵2號、3號、4號電場倉泵所共用的助吹閥;61、62—管道切換閥。
飛灰輸送系統主要是將電除塵捕獲的飛灰通過倉泵輸送至外界飛灰倉,或者通過倉泵輸送至再循環灰倉返回鍋爐繼續燃燒:電除塵1號電場倉泵既可以將1號電場捕獲的飛灰(70%)排放至飛灰倉,又可以輸送到再循環灰倉,飛灰流向由切換閥61、62來實現,飛灰返回鍋爐繼續燃燒使飛灰中未燃盡成分繼續燃燒,提高了鍋爐燃燒效率,有利于節能減排;電除塵2號~4號電場倉泵分別負責將對應電場捕獲的飛灰排放至外界飛灰倉。
2.1.2 互斥設備驅動級操作系統方案
為了實現對CFB鍋爐飛灰輸送系統的全程自動控制,如圖4所示,采用操作層、調度層、任務層和I/O層4層體系架構,構建CFB鍋爐飛灰島多模式多任務互斥設備驅動級操作系統。

圖4 系統設計框圖
操作層主要是對用戶操作的響應。根據管道復用情況,系統在該層提供“1/3”和“0/4” 2種輸送模式,前者模式(61關閉且62打開,“1/3”)下1號電場倉泵負責將部分未燃盡飛灰送回再循環飛灰倉進入鍋爐再次燃燒,另外3臺倉泵復用一條管道將飛灰輸送到外界飛灰倉;后者模式(61打開且62關閉,“0/4”)下4臺倉泵復用一條管道將飛灰輸送到外部飛灰倉。用戶可以在2種模式之間任意選擇和切換,具體的調度和控制由下面的層來完成。
調度層采用多模式多任務的調度方法,實現了倉泵的優化調度以及飛灰流模式間的無擾動切換。本內核可以分為任務調度和模式調度兩部分。在管道空閑的時刻,基于不同飛灰輸送模式,任務調度從緩沖隊列中調出最長等待時間的任務,考慮到計算機計時精度的影響,若隊列中最長等待任務有多個(任務啟動時,所有等待時間均為0時刻),就會導致搶占發生死鎖,為了解除死鎖,對最長等待任務根據任務量大小分配靜態優先權,任務量重的先被賦予管道許可證進行飛灰輸送,該輸送完成后再調入下一個符合上述條件的任務進行輸送。為了響應來自操作層的模式切換命令,該層提供模式調度:首先將任務調度休眠,然后等待所有倉泵都交出管道占用的時刻,對倉泵模式進行切換,這樣就保證了切換的無擾動,切換完成后喚醒任務調度。
任務層主要是依照調度層發送的調度許可執行任務,按照圖5(a)所示操作系統狀態進程模型進行任務調度,實現倉泵從裝料到輸送的整個工藝過程。單臺倉泵啟動時,任務即被創建,可以將其劃分為輸送態(C)、裝料態(Z)和就緒態(R)3種狀態,單臺倉泵退出時,任務經過調度進入退出態,飛灰島倉泵狀態調度模型狀態轉換如圖5(b)所示。

(a) 計算機操作系統狀態調度模型
I/O層是最底層的資源,主要負責將上層指令輸出到現場設備,并負責將現場壓力及其料位信號采集到控制系統,供上層調用。
以電廠原水站泵組作為調度對象,開發非互斥設備驅動級操作系統。
2.2.1 電廠原水站工藝
電廠原水站系統由多臺水泵構成,配置圖如圖6所示,水泵之間是非互斥關系,可以并列多臺水泵運行,維持原水池的水位以滿足電廠用水需求。

圖6 電廠原水站系統配置圖
傳統的泵組控制系統中,僅設置水位、其他水泵故障停運等條件連鎖設備啟停,容易因部分水泵工作時間過長,磨損折舊較快,導致故障率較高。同時,一部分水泵長期停運,其壽命也會大大降低。
2.2.2 非互斥設備驅動級操作系統設計方案
針對電廠原水站泵組運行機制,提出一種多通道變時長時間片輪轉調度的運行隊列算法,構造非互斥設備映射區驅動級調度操作系統,主要通過冗余的DCS控制器、I/O卡件,人機操作單元、超聲波水位計及其相對應的變送器等儀控部件對泵組設備進行有效調度控制[11]。
非互斥設備的隊列跳轉方案設計步驟如下:
步驟1,控制器對采集的3個水位測量值進行容錯邏輯判斷。
步驟2,當前取水位測量通道有效量程的固定區間[H1,HN],按照水泵的臺數(取N)離散成H1,H2,…,HN共N個控制點。依據當前水位測量值確定投運水泵需求臺數ZN。
步驟3,水泵運行/停運時間比較。對比水泵運行時間的實時累計情況,得到運行水泵中運行時間最長的水泵K,對比水泵停運時間的實時累計情況,得到停運水泵中停運時間最長的水泵J,(若2臺水泵停運/運行時間相同且最大,選擇序號小的泵)。
步驟4,統計當前水泵運行臺數ZR,水泵偏差臺數Δ=ZN-ZR,其中ZN為當前水位的投運水泵需求臺數。若Δ=0,則執行步驟5;若Δ>0,則選擇停運時間最長的水泵J投入運行,水泵J停運時間清零,運行時間開始累計,返回步驟1;若Δ<0,則運行時間最長的水泵K停止運行,水泵K運行時間清零,停運時間開始累計,返回步驟1。
步驟5,如圖7所示,如果運行泵在達到操作員設定的運行時間后自動停運,返回步驟1進行周期刷新;如果運行泵故障跳閘,返回步驟1進行周期刷新,同步退出運行和停運隊列進行設備檢修,檢修完成并經過操作員確認,重新進入停運隊列。

圖7 非互斥設備的隊列跳轉方案設計
本操作系統算法能夠適配所有滿足IEC61131-3標準控制環境且以固定周期掃描方式運行的可編程控制器設備,不同的是國內一些自主研發的控制器底層模塊偏簡單,算法實現的工作量較大,而國外一些控制器廠商采用更開放的算法策略,底層模塊功能豐富,技術更新較快,更能適應工業現場智能化程度不斷提升的要求,因此在操作系統的實現上更為簡化便捷。
筆者采用國產OC4000控制系統構建了飛灰島互斥設備多模式多任務操作系統,并基于美國艾默生OVATION控制平臺,采用隊列算法實現了泵組非互斥設備操作系統。
系統操作層主要借助上位計算機來實現系統的人機交互;I/O層主要使用輸入、輸出板卡來實現系統與就地設備的信號傳遞與處理;系統調度層和任務層均在控制器內實現,關鍵是多模式多任務調度。
3.1.1 任務調度主要實現步驟
根據圖8的系統設計圖,任務調度層主要有以下實現步驟:

圖8 系統設計框圖
步驟1,系統就緒。通過I/O層讀取倉泵的壓力/料位信息,并作初始化判斷,系統只有在氣源壓力合適的情況下才能進行下面的任務創建。
步驟2,系統初始化,ri=ci=zi=wi=0(i=1,2,3,4)。其中ri、ci、zi分別表示第i臺倉泵的就緒態、輸送態和裝料態,如果倉泵處于相應的狀態,則該布爾量為1,否則為0;wi表示任務在緩沖池的等待時間。
步驟3,任務創建。通過操作層響應用戶指令信息,用戶啟動一臺倉泵相當于在系統中創建了一個任務。
步驟4,任務緩沖隊列等待輸送。任務創建或裝料完成便進入就緒態,wi記錄了任務在緩沖池的等待時間。若系統處于1/3調度模式,則電除塵1號電場倉泵不需要任何等待,所以被清除出等待隊列。系統緩沖池等待向量可表示為W=((1-k)w1w2w3w4),若系統處于1/3調度模式,則k=1;若系統處于0/4調度模式,則k=0。
步驟6,最大值向量計算。M=F(W),其中M=(m1,m2,m3,m4),F記作wi是否為W最大值的標記函數,若wi是W的最大值,則mi標記為1,否則為0。
步驟7,死鎖判斷。考慮到計算機的計時精度,W向量中有可能出現2個最大值,這時就會發生資源搶占并產生死鎖。若(M∧B)(M∧B)T=1,則說明沒有發生死鎖,給向量賦值為N=M;若(M∧B)(M∧B)T>1,則說明發生死鎖,然后進入死鎖解除程序,根據任務的靜態優先權判斷靜態優先權高的優先獲得資源:
N=N1+N2
(1)
其中,
N1=F(M×Pr)
N2=F(M×Pr-(pr10 0 0))
pr1>pr2>pr3>pr4
步驟8,判斷系統是否被休眠并進行許可證向量輸出。判斷系統休眠信號s的狀態,s=1為休眠指令,而s=0為喚醒指令,根據休眠指令得到最終的管道許可證向量P:
(2)

(3)
任務調度系統通過該向量的賦值操作向符合條件的任務頒發許可,若pi=1則i電場倉泵滿足條件獲得許可。獲得許可的任務立刻進入輸送狀態,與此同時任務調度系統在發送完許可證之后,立刻返回步驟4循環執行。
3.1.2 模式調度實現步驟
根據圖4系統,模式調度層主要實現步驟如下:
步驟1,接收來自操作層的模式調度指令。
步驟2,向任務調度步驟8發送休眠指令s=1。
步驟3,若所有倉泵都不在輸送狀態,則通過切換閥門61、62進行模式切換。
步驟4,模式切換完成后,向任務調度步驟8發送喚醒指令s=0結束模式調度。
3.1.3 倉泵任務實現步驟
在接收到操作層的倉泵投入指令后,系統就為該倉泵創建了一個任務,該任務被劃分為就緒態、輸送態和裝料態3種狀態,3種狀態循環轉化實現了任務的整個執行過程。
過程1,任務創建或裝料完成進入就緒態,獲取任務調度步驟8的調度許可后,就進入輸送態。
過程2,輸送態可以細分為4個子步驟:(1)加壓閥將倉泵加到一定壓力;(2)開助吹閥;(3)開出料閥;(4)壓力降至閾值之下,關出料閥結束輸送態。
過程3,若輸送態結束,檢測是否有來自操作層的退出指令,若有退出指令存在(Qi=1),則結束任務并復位退出指令,否則(Qi=0)進入裝料態,裝料完畢返回重新執行過程1。裝料態也可以細分為2個子步驟:(1)開排氣閥,延時開進料閥;(2)關進料閥,延時關排氣閥。
3.1.4 實施效果
基于上述實現思路,如圖9所示,通過在國產分散控制系統平臺上實施工程組態,基于IEC61131-3標準控制環境,直接操作現場設備映射區的倉泵驅動級,實現了多模式多任務無擾切換的操作系統調度的微內核和人機交互界面。

圖9 飛灰島操作系統人機交互界面
用戶在切換輸送方式(ONLINE BUMPLESS SWITCH)時,實現了0/4調度模式和1/3調度模式的無擾動切換,不會造成切換過程中產生管道紊流進而導致管道堵塞,在任意輸送方式下實現飛灰倉泵并發任務的流水線執行,有效避免了由于同時占用管道輸灰造成的管道堵塞,延長了有效輸送距離。用戶只要在操作層發出指令即可,調度層自動響應用戶需求,用戶不用等待,系統自動完成此無擾切換操作。為了防止音叉料位計失效,造成物料無法及時輸送的風險,設置強制的最大物料給定時間(MAX FEED TIME SET),倉泵裝料超過這個時間后,自動關閉進料閥,進入就緒態,等待管道調度空閑再進行輸送。
另外,用戶只要將倉泵啟動,投入再循環灰倉料位聯鎖,整個飛灰輸送系統的倉泵調度完全由這個操作系統掌控,即完全實現整個飛灰輸送的全程自動,減少了操作人員的監盤工作量,提高了飛灰島的自動化水平。
電廠水泵這類非互斥運行設備數量非常龐大,常用的備用聯鎖方案需要運行人員手動操作,無法實現無人值守。對于這類通用設備,采用筆者所構建的非互斥設備雙隊列模型操作系統進行設備級的控制調度,大大減輕了運行人員的操作強度。
3.2.1 系統實現舉例
某電廠原水站系統如圖6所示,潛水泵的數量為10臺,原水池高度為6 m。若此時3個水位測量值分別為5.082 m、5.085 m和5.088 m,運行隊列的3臺水泵分別是1.1、1.2和1.3,其余水泵均在停運隊列。10臺水泵的停運時間統計向量TJ、運行時間統計向量TK以及操作員對每臺水泵的運行時間設定向量TS(單位h)分別為:TJ=[0,0,0,4,5,6,7,8,9,10],TK=[1,2,3,0,0,0,0,0,0,0],TS=[5,5,5,6,6,6,6,6,6,6],采用雙隊列循環算法對該非互斥設備進行控制的實現。
步驟1,對進入控制器的3個水位測量值5.082 m,5.085 m,5.088 m進行綜合判斷,有一個值5.085 m自檢品質壞,則H取另外2個自檢品質好的值的平均數5.085 m。
步驟2,依據當前水位測量值得到投運水泵需求臺數ZN。取水位測量通道有效量程的固定區間[H1,HN],按照水泵的臺數離散成10個離散點,如果水位測量值H
步驟3,利用控制器固定的周期掃描對水泵運行時間進行實時累計統計,排序比較,依次壓入運行隊列,得到運行時間最長的水泵為1.3泵;同理,對水泵停運時間進行實時累計統計,排序比較,依次壓入停運隊列中,得到停運時間最長的水泵為1.10泵。
步驟4,統計當前水泵運行臺數ZR,水泵偏差臺數Δ=4-3。Δ>0,則選擇停運水泵中停運時間最長的水泵1.10投入運行,1.10泵停運時間清零,運行時間開始累計,返回步驟1重新計算Δ。
步驟5,若運行水泵1.3在達到操作員設定的5 h運行時間后自動停運,返回步驟1重新計算Δ;若運行泵故障跳閘,也返回步驟1重新計算Δ,并安排維修,完成后重新進入隊列。
3.2.2 系統效果
通過定周期掃描的邏輯控制算法塊,直接操作現場水泵在控制器映射區的驅動級,構建了非互斥設備雙隊列循環操作系統。圖10為操作系統人機交互界面,界面右側是水位控制面板。

圖10 電廠原水站泵組隊列循環操作系統人機交互界面
項目實施后,操作員根據實際情況對各臺水泵的運行時間進行多樣化設定,優化了泵組調度,降低了水泵的事故率,延長了水泵使用壽命,實現了基于運行/停運時間統計調度的離散水位高可靠性控制和狀態檢修。當水泵出現故障停運時,能夠自動輪換到下一臺停運時間最長的水泵,具備泵組級保護聯鎖功能,充分調度系統水泵的余度潛力,具備可靠的故障應對能力。
(1) 借鑒現代計算機操作系統的多任務進程、運行隊列等先進調度理念,采用IEC61131-3標準語言和工具,在控制器映射區驅動級層面開發了適用于電廠飛灰島和原水站的互斥和非互斥模型操作系統,取得了不錯的應用效果,滿足業主嚴苛的無人值守需求。
(2) CFB鍋爐飛灰島的互斥倉泵組在多模式多任務切換的操作系統調度下,以流水線形式復用管道進行輸送,并進行無擾模式切換,利用飛灰在循環中提高鍋爐效率的同時,確保了鍋爐的連續運行。
(3) 電廠非互斥水泵組在雙隊列循環操作系統調度下,根據每個水泵的運行和停運小時數統計以及可運行時間的設定,進行循環調度和故障聯動,自動觸發檢修推薦事件,在充分挖掘水泵備用余度實現狀態檢修的同時,還保證了泵組的長期可靠運行。
(4) 雖然作為整個智慧能源場站的一部分,但是電廠全局性操作系統的實現和應用還有一定距離,因此在電廠數字化智能化轉型過程中,在進行頂層設計的同時,還應關注底層邏輯控制與先進操作系統理念相結合帶來的算法形態躍遷,不斷提升能源場站的智能化等級。