李 浩
(北京中燕建設工程有限公司,北京 102500)
某生產裝置運行時,其中物料組分較重、粘稠,易積聚堵塞機泵。為了防止機泵運行時間過長、堵塞嚴重,從而損壞設備,需要對運行時間過久的機泵進行備泵切換,定期離線清理維修。此裝置有145 個機泵,設備管理人員如果采用手工記錄的方式來記錄機泵的運行時間,極易出現記錄失誤,導致設備不能及時得到檢修,不僅損壞設備,甚至導致生產事故。為了解決此問題,使設備管理人員的操作方便、設備的運行安全,儀表人員通過不停攻關,最終在DCS 中實現某裝置的145 個機泵的運行計時。
此裝置的DCS 系統為橫河Centum VP 系統,橫河電機最新產品系列。該系統性能可靠、功能先進,具有更為直觀的人機界面,大容量現場控制站能夠快速準確地處理數據,CPU 的冗余容錯配置可以確保可用性高達99.999 99%的連續操作[1]。系統提供了更好的信息可見性、性能預見性和操作靈活性。其簡單通用的結構,適用于各種工廠規模和行業[2]。
橫河Centum VP 系統主要由操作站(HIS)、工程師站(ENG)、現場控制站(FCS)、控制網絡(Vnet/IP)及其相應附屬設備組成[3]。
根據系統監控要求,此裝置要檢測和控制輸入輸出點的數量(I/O 點)為AI:727 點、AO:183 點、DI:579 點、DO:156 點。
根據I/O 點數及裝置的監控要求,配置了一對冗余控制器,3 個控制柜,1 個電源柜、2 個輔助端子柜,4 臺操作站,1 臺工程師站,1 臺OPC 站,1 臺AMS 設備管理服務器,一對冗余交換機。控制站節點單元25 個,模擬量輸入卡89 個,模擬量輸出卡38 個,數字量輸入卡27 個,數字量輸出卡20 個,MODBUS 通訊卡4 個。
現場每個機泵都有一個運行狀態回訊DI(Digital Input,數字量輸入點)點,當運行狀態回訊為“1”時代表現場機泵在運行,當運行狀態回訊為“0”時代表現場機泵已停止。因此,要想知道泵的運行時間,只要對泵的運行狀態回訊為“1”進行計時,便可得到。具體實現方法如下:
1)DCS 中有專用的TM 計時器模塊(Timer Block)用于計時,它的計時模式有兩種:“SEC:Second Timer”(秒計時器)、“MIN:Minute Timer”(分鐘計時器)。TM 計時器模塊計時上限PH 的數據范圍為0 ~100000。如果使用“秒計時器”模式,最大計時范圍100000s,換算為1.157D,時間太短,不滿足使用要求,因此只能使用“分鐘計時器”模式。
2)TM 計時器模塊的動作指令需要工藝操作人員手動或者內部程序模塊發出。這些內部程序模塊可以是ST16 順控表模塊(Sequence Table Block)、LC64 邏輯圖模塊(Logic Chart Block)、CALCU 通用計算模塊(General-Purpose Calculation Blocks)等。計時器的計時需要在泵的運行狀態回訊從“0”變為“1”時上升沿啟動,在泵的運行狀態回訊從“1”變為“0”時下降沿計時停止。人工操作肯定不能實時響應,需要內部程序模塊來實現,可以選擇ST16 順控表模塊,進行邏輯運算組態,內容如下:
3)設備管理人員想知道的是泵運行了多少天,并不需要精確知道運行了多少秒(“秒計時器”模式)或多少分鐘(“分鐘計時器”模式),需要換算成天數,人工的換算過程還容易出現失誤。因此,需要一個CALCU 通用計算模塊用于時間單位的換算,把TM 計時器模塊的分鐘計時值換算為天數。CALCU 通用計算模塊組態如下:
采用此方案,每個機泵都要新建3 個DCS 內部程序模塊,分別為:TM 計時器模塊、ST16 順控表模塊、CALCU通用計算模塊。
工作原理是:在ST16 順控表模塊內判斷機泵的運行狀態回訊是運行還是停止,如果機泵在運行狀態,就啟動TM計時器模塊;如果機泵在停止狀態,就停止TM 計時器模塊。CALCU 通用計算模塊實時把TM 計時器模塊的計時值從分鐘轉換為天數。
為了方便設備管理人員監控,在流程圖中做集中顯示運行時間,并且做好顏色修飾,運行的機泵顯示天數為綠色,停止機泵顯示的天數為紅色。流程圖顯示畫面如圖1所示。

圖2 機泵運行狀態回訊列表Fig.2 List of pump operation status feedback
優點:
1)在DCS 中實現了對機泵運行時間的計時,計時精確到分,為工藝提供準確時間。
2)在流程圖中集中顯示運行時間,并用顏色做好修飾,使設備管理人員能夠迅速掌握現場機泵的運行情況、運行時間,做到直觀、一目了然。
3)機泵計時可以設置時間上下限報警,提醒設備管理人員及時切換機泵。
4)機泵計時可以做歷史趨勢,為機泵的運行狀況分析提供準確的數據支撐。
缺點:
1)裝置有145 個機泵,每個機泵都要3 個內部程序模塊,總共需要435 個內部程序模塊,加大了DCS 系統中控制站CPU 的運算量。
2)TM 計時器模塊的數據上限100000 分鐘,為69.44天,約2.31 個月。如果超過此時間,數據溢出,TM 計時器模塊產生計時到上限報警,不再繼續計時。經過與設備管理人員溝通,機泵連續運行時間可到半年,計時范圍不能滿足其使用要求。
在上一個方案的基礎上,再加一個TM 計時器模塊。在第一個TM 計時器模塊計時到最大值時,觸發第二個TM 計時器模塊開始計時。這樣的話,累計時間可以達到69.44+69.44=138.88 天,換算為4.63 個月。
缺點:
1)如果每個機泵新再加1 個TM 計時器模塊,加上原方案每個機泵3 個內部程序模塊,共有145×4=580 個內部程序模塊在DCS 中運行。繼續增加DCS 系統控制站中CPU的運行負擔,有可能影響DCS 的正常控制、監視功能,影響裝置平穩運行。
2)計時時間只翻了一倍,但增加了CPU 運行負荷,還有可能不滿足工藝使用,性價比比較低。
在初始方案的基礎上,做以下改進:
1)每個機泵用2 個DCS 內部程序模塊,分別為TM 計時器模塊、CALCU 通用計算模塊。
2)在CALCU 通用計算模塊中,通過內部函數監測機泵的回訊狀態變化,判斷是運行還是停止,然后把TM 計時器模塊置為開始計時還是停止計時,然后在CALCU 通用計算模塊內把TM 計時器模塊中的分鐘轉換為天數。
3)為了避免TM 計時器模塊達到計時上限,異常停止問題。在CALCU 通用計算模塊中,加一個判斷子程序,判斷TM 計時器模塊是否接近數據上限。若接近上限,提前處理,避免異常停止。具體實現:CALCU 通用計算模塊中參數P01 實時取自TM 計時器模塊計時值PV。如果P01 達到99999 min,代表TM 計時器模塊接近數據上限,此時CALCU 通用計算模塊中參數P02 累加1,對TM 計時器模塊計時值PV 清零,此時TM 計時器模塊繼續從零開始計時,不會停止計時。參數P02 即為每次達到計時上限進位計數。CALCU 通用計算模塊自寫腳本如下:
優點:
1)CALCU 通用計算模塊的參數P01、P02 的數據上限為99999999999,能達到的累計時間為:P02 數據上限×69.44 天=69.44×1011天=1.9×1010年。但是因為流程圖顯示數據位數有限制,數據顯示能夠達到9999.99 天,約為27.4 年。此裝置一般1 年檢修一次,考慮推廣到其他煉化裝置,一般4 ~5 年大修一次,因此這個計時范圍完全滿足各種需要。
2)每個機泵用2 個DCS 內部程序模塊,比原方案減少145 個DCS 內部程序模塊,從而減少DCS 系統控制站CPU 的負荷,提高了效率。
3)克服了橫河DCS 的TM 計時器模塊數據上限的限制,不只滿足了此裝置的使用,也為以后類似的工作提供了范例。
在此次組態實施過程中,每個現場機泵數量都有1 個運行狀態回訊,總計145 個運行狀態回訊信號分布在3 個DCS 現場控制站(站名為:FCS0209、FCS0210、FCS2011)中,其中現場控制站FCS0209 中有36 個,現場控制站FCS0210 中有46 個,現場控制站FCS0211 中有63 個。
通過以上的分析研究,最終方案是每個機泵用兩個DCS 內部程序模塊,分別為TM 計時器模塊、CALCU 通用計算模塊,合計290 個內部程序模塊。如果采用常規的組態方法,一個一個新建DCS 內部程序模塊,還要逐個設置每個模塊內部參數、編制腳本。
這些組態工作,在建立第一個機泵的兩個DCS 內部程序模塊,并調試成功后,剩余的機泵組態,是重復、機械工作,非常耗費時間和精力。不止效率低下,耗時費力,還極易出現失誤。對于此種情況,特別適用自動化程序腳本(VBA)處理的方法,來實現組態批量實現。
VBA 是Office 辦公軟件中各套件內嵌的編程語言,它采用Visual Basic 的語言和面向對象技術,能夠很方便地增強宿主的功能,實現用戶定制化的便捷技術[4]。VBA 是運行在Microsoft Office 軟件之上,可以用來編寫非軟件自帶的功能的編程語言。Office 軟件提供豐富的功能接口,VBA 可以調用它們,實現自定義的需求。VBA 可以運行在Office 軟件上,包括Excel、Word、PPT、Outlook 等。VBA語言在Office 軟件中是通用的,基本語法和用法都相同。但是每一個軟件具有自己獨有的對象,例如Excel 有單元格對象,Word 有段落對象,PPT 有幻燈片對象。本次使用的是Excel 中的VBA 應用,利用Excel 內嵌VBA 開發工具,可以開發出一些復雜、專業的應用程序,對具體的數據進行具體的開發處理[5]。
通過研究橫河DCS 組態軟件System View 中Control Drawing Builder 中組態文件的源代碼,尋找并發現規律,然后通過在Excel 中自編VBA 函數實現自動化批量處理。
具體實現過程如下:
1)整理出機泵運行狀態回訊在各個現場控制站的列表,以現場控制站FCS0209 為例,如2 圖所示。
2)拿其中一個機泵P-101A 作為模板。通過此機泵運行狀態回訊YSLP101A,新建2 個DCS 內部程序模塊,分別為TM 計時器模塊P101ARUNTM、CALCU 通用計算模塊P101ARUNCL。然后在Control Drawing Builder 組態界面菜單中,找到導出菜單(External File →Export...),把DCS內部程序模塊的組態信息導出為TXT 格式。
3)若利用VBA 來自動化批量處理,需要把導出的TXT 格式文件數據導入到EXCEL 中,如圖3 所示。

圖3 TXT文件導入到EXCELFig.3 TXT File import to Excel

圖5 TM計時器模塊P101ARUNTM、CALCU通用計算模塊P101ARUNCL的源代碼Fig.5 Source code for TM timer module P101ARUNTM and CALCU general calculation module P101ARUNCL
4)分析組態文件源代碼,識別規律。通過逐條對照分析,可以明確,在源代碼中,主要分為3 個部分:①最開始的部分,第1 行“:::SOURCE”到第16 行“::FHED”是Control Drawing Builder 控制圖源代碼的前半部分,此部分是每個Control Drawing Builder 控制圖的固定內容;②從“:FNRM”到“::FNRM”是P101A 泵TM 計時器模塊P101ARUNTM 的源代碼。從“:FCAL”到“::FCAL”P101A泵CALCU 通用計算模塊P101ARUNCL 的源代碼。這部分內容是需要修改的內容,是組態的主要部分;③最后一部分“:::: SOURCE”是控制圖源代碼的后半部分,結束語句,也是固定內容。
5)再具體分析源代碼中每行代表的設置屬性,然后用EXCEL 的VBA 腳本自編宏程序,把泵P101A 的相關信息替換為其他機泵,并且注意模塊序號、位置,還要根據每個控制圖中只能放置100 個內部程序模塊,做好判斷、分塊,其中FCS2011 就需要分為2 個控制圖來組態。VBA 自編腳本如圖6 所示。

圖6 EXCEL中編寫的VBA腳本Fig.6 VBA Script written in Excel
6)把VBA 腳本生成的源代碼保存為TXT 文件,然后使用Control Drawing Builder 控制圖組態中的導入菜單(External File →Import...),導入到控制圖中,最終下裝組態。
通過實施方案的不斷改進,在DCS 中順利地實現了145 個機泵的運行計時。不只在Centum VP 中可以使用,經過測試,在Centum CS3000 中也能正常使用。既減少了人力的損耗,計時準確高效,還盡量減少對控制站平穩運行的影響,在這之間找到一個均衡點。還通過組態的技巧,減少了工作量,保證組態的準確無誤,組態下裝后一次運行成功。
這些方法在實現了計時功能的同時,不影響主要控制功能,還通過一些技巧達到高效、無誤,為以后類似的項目提供了很好的經驗。