尹靜濤,劉利平
YIN Jing-tao1, LIU Li-ping2
(1.河北能源職業技術學院 機電工程系,唐山 063004;2.河北聯合大學 信息工程學院,唐山 063009)
高爐生產測控系統由工業控制機、RS-485網絡、ADAM-5000/TCP數據采集系統和現場的傳感變送器等設備組成,如圖1所示。其作用是對高爐運行時的各項工藝參數進行實時采集、屏幕顯示、趨勢記錄、超限報警和統計報表等,為正常生產提供了有效的保障。

圖1 高爐生產參數測控系統示意圖
ADAM-5000/TCP數據采集系統由ADAM-5000/TCP主機和各種I/O模塊組成。ADAM-5000/TCP主機上有RS-485接口,可以方便地構成包括多臺ADAM-5000/TCP和上位計算機的測控網絡。ADAM-5000/TCP采用以太網技術克服了原來分布式控制系統的局限性,ADAM-5000/TCP整合了Modbus/TCP通訊協議, 它能夠傳輸重要的數據信息并且整合基于Modbus標準的不同Fieldbus 總線的控制系統;ADAM-5000/TCP 還可以通過以太網讀取遠程數據結構并且在不用中轉器的情況下最遠可以傳輸100 m;ADAM-5000/TCP 確保了設備的互用性和可交換性,減少了存取和維護的費用而且增強了網絡的可靠性和安全性,因此它是一個合適的結構方案和有效的管理系統。每個ADAM-5000/TCP底板上可以插4個I/O模塊,用戶可根據具體需要選擇適當的配置。在本系統中,2臺ADAM-5000/TCP上配置了3個5018熱電偶輸入模塊、1個5013熱電阻輸入模塊、2個5017模擬量輸入模塊和1個5068繼電器輸出模塊。系統采集的高爐工藝參數主要包括:爐身溫度、導出管溫度、冷風溫度、高爐料位、導出管壓力、熱風管壓力、冷卻水壓力等。
系統監控軟件使用組態王6.0組態編制。由于需要和工廠的管理信息網交互數據,所以在監控系統中設置了OPC數據服務器,通過編寫OPC客戶端程序來調用實時的高爐生產工藝參數。
OPC全稱是Object Linking and Embeding(OLE) for Process Control,它的出現為基于Windows的應用程序和現場過程控制應用建立了橋梁。在過去,為了存取現場設備的數據信息,每一個應用軟件開發商都需要編寫專用的接口函數。由于現場設備的種類繁多,且產品的不斷升級,往往給用戶和軟件開發商帶來了巨大的工作負擔。通常這樣也不能滿足工作的實際需要,系統集成商和開發商急切需要一種具有高效性、可靠性、開放性、可互操作性的即插即用的設備驅動程序。在這種情況下,OPC標準應運而生。OPC標準以微軟公司的OLE技術為基礎,它的制定是通過提供一套標準的OLE/COM接口完成的,在OPC技術中使用的是OLE 2技術,OLE標準允許多臺微機之間交換文檔、圖形等對象。
COM是Component Object Model的縮寫,是所有OLE機制的基礎。COM是一種為了實現與編程語言無關的對象而制定的標準,該標準將Windows下的對象定義為獨立單元,可不受程序限制地訪問這些單元。這種標準可以使兩個應用程序通過對象化接口通訊,而不需要知道對方是如何創建的。例如,用戶可以使用C++語言創建一個Windows對象,它支持一個接口,通過該接口,用戶可以訪問該對象提供的各種功能,用戶可以使用Visual Basic,C,Pascal,Smalltalk或其它語言編寫對象訪問程序。在Windows NT4.0操作系統下,COM規范擴展到可訪問本機以外的其它對象,一個應用程序所使用的對象可分布在網絡上,COM的這個擴展被稱為DCOM(Distributed COM)。
通過DCOM技術和OPC標準,完全可以創建一個開放的、可互操作的控制系統軟件。OPC采用客戶/服務器模式,把開發訪問接口的任務放在硬件生產廠家或第三方廠家,以OPC服務器的形式提供給用戶,解決了軟、硬件廠商的矛盾,完成了系統的集成,提高了系統的開放性和可互操作性。
OPC服務器通常支持兩種類型的訪問接口,它們分別為不同的編程語言環境提供訪問機制。這兩種接口是:自動化接口(Automation interface);自定義接口(Custom interface)。自動化接口通常是為基于腳本編程語言而定義的標準接口,可以使用VisualBasic、Delphi、PowerBuilder等編程語言開發OPC服務器的客戶應用。而自定義接口是專門為C++等高級編程語言而制定的標準接口。
工業控制領域用到大量的現場設備,在OPC出現以前,軟件開發商需要開發大量的驅動程序來連接這些設備。即使硬件供應商在硬件上做了一些小小改動,應用程序就可能需要重寫;同時,由于不同設備甚至同一設備不同單元的驅動程序也有可能不同,軟件開發商很難同時對這些設備進行訪問以優化操作。硬件供應商也在嘗試解決這個問題,然而由于不同客戶有著不同的需要,同時也存在著不同的數據傳輸協議,因此也一直沒有完整的解決方案。
自OPC提出以后,這個問題終于得到解決。OPC規范包括OPC服務器和OPC客戶兩個部分,其實質是在硬件供應商和軟件開發商之間建立了一套完整的“規則”,只要遵循這套規則,數據交互對兩者來說都是透明的,硬件供應商無需考慮應用程序的多種需求和傳輸協議,軟件開發商也無需了解硬件的實質和操作過程。OPC現已成為工業界系統互聯的缺省方案,為工業監控編程帶來了便利,用戶不用為通訊協議的難題而苦惱。任何一家自動化軟件解決方案的提供者,如果它不能全方位地支持OPC,則必將被歷史所淘汰。
組態王充分利用了OPC服務器的強大性能,為工程人員提供方便高效的數據訪問能力。在組態王中可以同時掛接任意多個OPC服務器,每個OPC服務器都被作為一個外部設備,工程人員可以定義、增加或刪除它,如同一個PLC或儀表設備一樣。
組態王在原有的OPC客戶端的基礎上添加了OPC服務器的功能,實現了組態王對OPC的服務器和客戶端的統一。通過組態王OPC服務器功能,用戶可以更方便的實現其他支持OPC客戶的應用程序與組態王之間的數據通訊和調用。
為了方便用戶使用組態王的OPC服務器功能,使用戶無需在無其它需求的情況下再另外購買OPC客戶端軟件,組態王提供了一整套與組態王的OPC服務器連接的函數接口,這些函數可通過提供的動態庫KingvewCliend.dll來實現。用戶使用該動態庫可以用VB、VC等編程語言編制自己的OPC客戶端程序。
OPC客戶端程序是使用VB6.0編寫的。圖2給出了一個OPC客戶端例程的流程圖,簡要說明如下:
在用戶工程中,首先應聲明對動態庫KingvewCliend.dll中的函數接口的引用:
Declare Function StartCliend Lib "C:kingvewcliend.dll" (ByVal pNode As String) As Integer
Declare Function StopCliend Lib "C:kingvewcliend.dll" () As Integer Declare Function ReadItemNo Lib "C:kingvewcliend.dll" () As Integer

圖2 OPC客戶端例程流程圖
Declare Function GetItemNames Lib "C:kingvewcliend.dll" (ByVal ItemName As String,ByVal Index As Integer) As Integer
Declare Function AddTag Lib "C:kingvewcliend.dll"(ByVal pNode As String, ByRef TagID As Integer,ByRef DataType As Integer) As Integer
Declare Function ReadTag Lib "C:kingvewcliend.dll"(ByVal TagID As Integer, ByRef bVal As Boolean,ByRef lVal As Long, ByRef fVal As Double, ByRef sVal As String) As Integer
定義兩個全局變量ginta、gintb作為系統運行時讀項目名稱、讀采集列中變量實時值的循環次數。
根據設計好的用戶窗體,將各個函數連接到相應的預定義過程中:首先,調用StartCliend()函數啟動與OPC服務器的連接,可通過該函數的pNode參數來控制與哪臺計算機的組態王進行連接;然后,調用ReadItemNo()函數,將返回的組態王OPC中列出的項目總數賦值給ginta;再以ginta為循環次數,依次調用GetItemNames()函數來獲得項目的名稱,并以列表框顯示所有項目的名稱;接著,調用AddTag()函數將用戶選擇采集的變量添加到采集列,并在用于數據顯示的控件MSHFlexGrid中顯示已選的項目變量、變量數據類型、變量采集的標識號等,同時累計采集列中的項目數賦值給gintb;最后,利用定時器定義數據采集頻率,當定時器事件發生時,以gintb為循環次數、變量采集標識號為參數,依次調用ReadTag()函數,讀取所選定的項目變量的數據,并顯示在MSHFlexGrid控件中;退出客戶端程序時,通過調用StopCliend()函數,斷開與組態王OPC服務器的連接。
目前,OPC技術及標準已在各個領域中被廣泛應用,OPC技術賦予了現代工業控制軟件更強的生命活力。本文介紹的高爐測控系統中利用組態王6.0作OPC服務器,編制客戶端程序的方法,能夠滿足高爐工藝參數與工廠管理信息網交互數據的需求,充分展示了系統的開放性,具有廣泛的應用前景。
[1]北京亞控自動化軟件科技有限公司.KingView 6.0用戶手冊[Z].2001.
[2]鴻志工作組.Visual Basic 6.0中文版應用與開發[M].北京:科學出版社,1999.