摘 要:海上石油生產環境的惡劣性決定了海洋平臺水處理DCS系統工控參數報警限值的重要性,而海上注采生產工藝的改進以及設備的更新均會導致平臺水處理工藝被檢測工控參數報警限值的變動。本文運用組態軟件RSView32的內嵌式開發語言VBA,結合網絡技術與數據庫管理技術,研究并實現了平臺水處理DCS系統對工控參數報警限值的在線管理。系統的長期運行證明了該種方法的可行性和實用性。
關鍵詞:RSView32; DCS; 報警; 數據管理; ADO
Abstract: The abominable environment of petroleum production on the sea results in the importance of alerting critical value of industrial control parameter in Platform seawater treatment DCS, and improvement of petroleum production process and update of equipment bring to the change of alerting critical value of platform seawater treatment process control system. This paper integrates capabilities of VBA embedded in RSView32 configuration software with Network, RDBMS, to research and realize the on-line management of altering critical value of industrial control parameter in Platform Seawater Treatment DCS. The system’s long-term operation proves that the way of on-line management is feasible and practical.
Key words: RSView32; DCS; Alerting; Data Management; ADO
隨著測控技術的迅速發展,分布式計算機控制系統(DCS)得到了越來越廣泛的應用,海上平臺石油生產采用計算機監控系統實現綜合自動化生產也日趨廣泛。由于海上生產環境惡劣,設備易腐蝕、易老化,故障發生率高,因此,DCS系統必須具有強大的故障自診斷與安全保護等功能。當生產中出現不可預見的干擾和故障時,系統能及時做出反應并發出報警信息,而系統所采集的各工控數據是診斷與解決故障的基礎。因此,DCS系統內設的與各工控參數相對應的報警限值對整個石油生產的安全性、可靠性均有著極其重要的作用。此外,科技的發展必然會促進平臺石油生產工藝的不斷改進以及生產設備的不斷更新,所以各工控參數的報警限值也必須根據新工藝、新設備以及新的工藝要求作適當修改。因此,DCS系統必須對工控參數報警限值實現有效的管理。
目前,DCS系統的開發,多采用可靠性高、組態靈活且易于生成應用程序的組態軟件來具體實現。在多數情況下,系統開發人員根據系統開發時生產過程的運作情況為各工控參數設置具體的報警上下限值。當系統中某工控參數的報警限值需要作修改時,開發人員通常將DCS系統退回到系統開發用組態軟件的編輯狀態,然后再對該工控參數的報警限值做修改。這樣會使得監控系統在某工控參數報警限值被修改的時間段內不能對工控過程進行實時監控,若此時工控過程出現異常情況,將會對生產造成一定程度的影響。因此,實現工控參數報警限值的在線管理對海洋平臺石油生產的安全運行有著十分重要的意義。
1 平臺水處理DCS系統構成
平臺水處理DCS系統下位機采用兩套A-B公司的SLC500型PLC,一套用作對海水細濾反沖洗子流程的過程控制,另一套用于對其它子流程中壓力、溫度、流量、液位、海水含氧量以及海水濁度的數據采集和控制閥的開度調節(如圖1所示)。
上位監控計算機負責對水處理工藝的過程監控,實現對PLC采集數據的實時顯示、趨勢描繪以及對整個流程的動態模擬。數據管理計算機主要負責對工作人員、設備以及工控數據信息的管理,并同時實現報表打印和數據查詢功能,且具有與監控計算機相同的對工控過程的監控功能。上位監控計算機與PLC之間的通訊利用DH+工業局域網來實現,監控計算機與數據管理計算機之間的通訊通過Ethernet以太網來實現。系統上位計算機監控系統采用Rockell RSView32組態軟件開發而成,數據管理服務器采用Microsoft SQL Server2000,數據管理系統采用Microsoft Visual Basic6開發實現。
2 報警限值在線管理的具體實現
RSView32組態編程中,Tag是其編程核心,且有兩種數據源類型,即Device(設備)和Memory(內存)。其數據源類型為Device的Tag,可被視為一個來自外部設備的數據,與下位機PLC的一個內存地址單元同步更新,因此,上位機與下位機的數據通訊是通過Device類型的Tag來實現,且每一個被檢測工控參數都對應一個Device類型的Tag。此外,其數據源類型為Memory的Tag,可被理解為一個來自計算機內部的數據,可稱之為變量,而工控參數報警上下限在線修改就是通過對Memory類型的Tag操作來實現的。
2.1 基本思想
(1)在RSView32項目管理器的Tag Database中,將各被檢測工控參數的報警限值設置為Tag(變量)而不是具體的數值,其Tag類型為Analog (模擬量),其Data Source(數據源)類型為Memory,其Initial(初始值)設置為當前工藝所要求的限位數值。
公共變量(Tags)創建如表1所示。PublicTag—返回報警限值需作修改的工控參數Tag名稱;UpperLimit—返回工控參數報警上限對應的Tag名稱;LowerLimit—返回工控參數報警下限對應的Tag名稱。
(2)利用Microsoft SQL Server2000數據庫管理器創建報警限值數據庫AlertingValue,并在操作系統控制面板的ODBC Administrator中配置一個指向AlertingValue數據庫的DSN。在數據庫AlertingValue中創建一張名為AlertingTagValue的自由表,用于存儲各工控參數報警上下限用Tag的當前值及相關屬性,如表2所示。
(3)利用RSView32的內嵌式語言——VBA和遠程數據訪問技術ADO對報警限值數據庫操作,實現對報警限值的查詢、修改以及存儲等管理操作,實現對報警數據的有效管理。
2.2技術實現與程序設計
(1)在RSView32項目管理器的Visual Basic Edit中,創建報警上下限在線管理用窗體frmAlertingV,如圖2所示。表3為窗體frmAlertingV中相關控件的屬性.


(2)在RSView32內為每個設有報警限值的工控參數設置Touch動作,用于返回工控參數及其報警限值所對應的Tags名稱:以緩蝕1#加藥罐的“液位顯示” 為例,為其添加“Touch”動作如下:& Set PublicTag “LT-2C2101” ; & Set UpperLimit “H_LT-2C2101”; & Set LowerLimit “H_LT-2C2101”; VbaExec frmAlertingV.Show
(3)程序設計
a.定義公共變量
Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public Upper As String
Public Lower As String
b.創建與SQL Server數據庫AlertingValue的聯結
cn.ConnectionString=”DSN=AlertingValue” _
“;UID=sa;PWD=sa”
cn.Properties(“Prompt”)=adPromptComplete
rs.Open “select TagName from AlertingTagValue”,_
cn,adOpenKeyset,adLockOptimistic,adCmdText
c.獲取并顯示待操作被監控參數當前報警限值
If gTagDb(PublicTag).Value= “LT-2C2101” then
FrmAlertingV.Caption= “緩蝕1#加藥罐液位”+_
“報警上下限在線修改”
Upper= gTagDb(“UpperLimit”).Value
Lower= gTagDb(“LowerLimit”).Value
frmAlertingV.TextBox1.Text =gTagDb(Upper).Value
frmAlertingV.TextBox2.Text=gTagDb(Lower).Value
Else
… …
End if
d.修改報警上下限值并將其存入AlertingValue數據庫
Upper= gTagDb(“UpperLimit”).Value
Lower= gTagDb(“LowerLimit”).Value
gTagDb(Upper).Value=Val(TextBox3.Text)
TextBox1.Text= gTagDb(Upper).Value
gTagDb(Lower).Value=Val(TextBox4.Text)
TextBox2.Text= gTagDb(Lower).Value
Do While Not rs.EOF
If rs!TagName= Upper then
rs!TagValue=Val(TextBox3.Text)
End if
If rs!TagName= Lower then
Rs!TagName=Val(TextBox4.Text)
End if
rs.Update
rs.MoveNext
Loop
e.各工控參數報警上下限所對應的Tag均為Memory類型,而Memory類型的Tag被修改后的數據不能在DCS系統中作永久性存儲。因此,為保證DCS系統重啟動的情況下工控參數報警上下限最近一次修改的數值仍然保持有效,則必須在DCS系統重新啟動的同時,使DCS系統再次從AlertingValue數據庫中獲取各工控參數報警上下限的數值。為實現該項功能,程序編寫如下:
Dim cnDcs As New ADODB.Connection
Dim rsDcs As New ADODB.Recordset
cnDcs.ConnectionString=”DSN=AlertingValue” _
“;UID=sa;PWD=sa”
cnDcs.Properties(“Prompt”)=adPromptComplete
rsDcs.Open “select TagName from AlertingTagValue”,_ cn,adOpenKeyset,adLockOptimistic,adCmdText
Do While Not rsDcs.EOF
gTagDb(rsDcs!TagName).Value= rsDcs!TagValue
rsDcs.Update
rsDcs.MoveNext
Loop
cnDcs.Close
f.在RSView32項目管理器的Macro功能模塊中,創建名為StartUp的宏文件,并在該文件中編寫代碼:VbaExec AlertingCriticalValue
g.在RSView32項目管理器的System\startup功能模塊中,設置系統運行的起始(startup)宏文件為StartUp,使得DCS系統運行的同時,執行AlertingCriticalValue過程,從AlertingValue數據庫中獲取工控參數的報警限值,為系統安全運行提供可靠數據。
3 結束語
在海洋平臺水處理DCS系統中,利用RSView32組態軟件的內嵌式語言——VBA,以及網絡技術和數據庫管理技術,實現了在上位機監控系統正常運行的情況下對平臺水處理DCS系統工控參數報警限值的在線管理,在不增加任何軟硬件成本的前提下, 增強了系統在數據管理方面的功能,提高了系統功能的可擴展性和可靠性,消除了海上石油生產因工藝改進和設備更新所可能造成的安全隱患,為平臺石油生產的安全運行提供了可靠保障,也為企業計算機控制系統的建設提供了很好的借鑒作用。
參考文獻
1.Rockwell Automation .RSView32 User’ Guides
2.[美] E.Winemiller, J.Roff, B.Heyman, R.Groom. Visual Basic 6.0數據庫開發. 清華大學出版社. 1999.9
3.[美] David Jung, Pierre Boutquin, John D.Conley III. Visual Basic 6開發人員參考手冊. 機械工業出版社. 2000.1
4.[美]Michael Otey, Paul Conte. SQL Server2000開發指南. 清華大學出版社. 2002.1
5.劉昌玉,張兆云,劉偉. RSView32和C++ Builder應用軟件的實時信息交換.計算機工程與應用.2001.7 103~106
6.陳增強,趙天航,劉忠信等.基于Windows NT環境下的工業鍋爐監控系統設計.計算機工程與應用.2000.8 163~165
7.鄒彤.Wincc組態軟件的編程技巧.化工自動化及儀表. 2001.28(2):63-64
8.王素珍等.Rockwell RSView32 在海洋平臺注水工藝流程監控系統中的應用.電氣自動化.2002年第24卷第6期
9.邵山等.自動化報警系統的開發與應用.電力系統自動化. 2001.1第25卷第2期