尹靜濤,劉利平
YIN Jing-tao1, LIU Li-ping2
(1.河北能源職業(yè)技術(shù)學(xué)院 機(jī)電工程系,唐山 063004;2.河北聯(lián)合大學(xué) 信息工程學(xué)院,唐山 063009)
高爐生產(chǎn)測(cè)控系統(tǒng)由工業(yè)控制機(jī)、RS-485網(wǎng)絡(luò)、ADAM-5000/TCP數(shù)據(jù)采集系統(tǒng)和現(xiàn)場(chǎng)的傳感變送器等設(shè)備組成,如圖1所示。其作用是對(duì)高爐運(yùn)行時(shí)的各項(xiàng)工藝參數(shù)進(jìn)行實(shí)時(shí)采集、屏幕顯示、趨勢(shì)記錄、超限報(bào)警和統(tǒng)計(jì)報(bào)表等,為正常生產(chǎn)提供了有效的保障。
圖1 高爐生產(chǎn)參數(shù)測(cè)控系統(tǒng)示意圖
ADAM-5000/TCP數(shù)據(jù)采集系統(tǒng)由ADAM-5000/TCP主機(jī)和各種I/O模塊組成。ADAM-5000/TCP主機(jī)上有RS-485接口,可以方便地構(gòu)成包括多臺(tái)ADAM-5000/TCP和上位計(jì)算機(jī)的測(cè)控網(wǎng)絡(luò)。ADAM-5000/TCP采用以太網(wǎng)技術(shù)克服了原來(lái)分布式控制系統(tǒng)的局限性,ADAM-5000/TCP整合了Modbus/TCP通訊協(xié)議, 它能夠傳輸重要的數(shù)據(jù)信息并且整合基于Modbus標(biāo)準(zhǔn)的不同F(xiàn)ieldbus 總線的控制系統(tǒng);ADAM-5000/TCP 還可以通過(guò)以太網(wǎng)讀取遠(yuǎn)程數(shù)據(jù)結(jié)構(gòu)并且在不用中轉(zhuǎn)器的情況下最遠(yuǎn)可以傳輸100 m;ADAM-5000/TCP 確保了設(shè)備的互用性和可交換性,減少了存取和維護(hù)的費(fèi)用而且增強(qiáng)了網(wǎng)絡(luò)的可靠性和安全性,因此它是一個(gè)合適的結(jié)構(gòu)方案和有效的管理系統(tǒng)。每個(gè)ADAM-5000/TCP底板上可以插4個(gè)I/O模塊,用戶可根據(jù)具體需要選擇適當(dāng)?shù)呐渲?。在本系統(tǒng)中,2臺(tái)ADAM-5000/TCP上配置了3個(gè)5018熱電偶輸入模塊、1個(gè)5013熱電阻輸入模塊、2個(gè)5017模擬量輸入模塊和1個(gè)5068繼電器輸出模塊。系統(tǒng)采集的高爐工藝參數(shù)主要包括:爐身溫度、導(dǎo)出管溫度、冷風(fēng)溫度、高爐料位、導(dǎo)出管壓力、熱風(fēng)管壓力、冷卻水壓力等。
系統(tǒng)監(jiān)控軟件使用組態(tài)王6.0組態(tài)編制。由于需要和工廠的管理信息網(wǎng)交互數(shù)據(jù),所以在監(jiān)控系統(tǒng)中設(shè)置了OPC數(shù)據(jù)服務(wù)器,通過(guò)編寫OPC客戶端程序來(lái)調(diào)用實(shí)時(shí)的高爐生產(chǎn)工藝參數(shù)。
OPC全稱是Object Linking and Embeding(OLE) for Process Control,它的出現(xiàn)為基于Windows的應(yīng)用程序和現(xiàn)場(chǎng)過(guò)程控制應(yīng)用建立了橋梁。在過(guò)去,為了存取現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)信息,每一個(gè)應(yīng)用軟件開(kāi)發(fā)商都需要編寫專用的接口函數(shù)。由于現(xiàn)場(chǎng)設(shè)備的種類繁多,且產(chǎn)品的不斷升級(jí),往往給用戶和軟件開(kāi)發(fā)商帶來(lái)了巨大的工作負(fù)擔(dān)。通常這樣也不能滿足工作的實(shí)際需要,系統(tǒng)集成商和開(kāi)發(fā)商急切需要一種具有高效性、可靠性、開(kāi)放性、可互操作性的即插即用的設(shè)備驅(qū)動(dòng)程序。在這種情況下,OPC標(biāo)準(zhǔn)應(yīng)運(yùn)而生。OPC標(biāo)準(zhǔn)以微軟公司的OLE技術(shù)為基礎(chǔ),它的制定是通過(guò)提供一套標(biāo)準(zhǔn)的OLE/COM接口完成的,在OPC技術(shù)中使用的是OLE 2技術(shù),OLE標(biāo)準(zhǔn)允許多臺(tái)微機(jī)之間交換文檔、圖形等對(duì)象。
COM是Component Object Model的縮寫,是所有OLE機(jī)制的基礎(chǔ)。COM是一種為了實(shí)現(xiàn)與編程語(yǔ)言無(wú)關(guān)的對(duì)象而制定的標(biāo)準(zhǔn),該標(biāo)準(zhǔn)將Windows下的對(duì)象定義為獨(dú)立單元,可不受程序限制地訪問(wèn)這些單元。這種標(biāo)準(zhǔn)可以使兩個(gè)應(yīng)用程序通過(guò)對(duì)象化接口通訊,而不需要知道對(duì)方是如何創(chuàng)建的。例如,用戶可以使用C++語(yǔ)言創(chuàng)建一個(gè)Windows對(duì)象,它支持一個(gè)接口,通過(guò)該接口,用戶可以訪問(wèn)該對(duì)象提供的各種功能,用戶可以使用Visual Basic,C,Pascal,Smalltalk或其它語(yǔ)言編寫對(duì)象訪問(wèn)程序。在Windows NT4.0操作系統(tǒng)下,COM規(guī)范擴(kuò)展到可訪問(wèn)本機(jī)以外的其它對(duì)象,一個(gè)應(yīng)用程序所使用的對(duì)象可分布在網(wǎng)絡(luò)上,COM的這個(gè)擴(kuò)展被稱為DCOM(Distributed COM)。
通過(guò)DCOM技術(shù)和OPC標(biāo)準(zhǔn),完全可以創(chuàng)建一個(gè)開(kāi)放的、可互操作的控制系統(tǒng)軟件。OPC采用客戶/服務(wù)器模式,把開(kāi)發(fā)訪問(wèn)接口的任務(wù)放在硬件生產(chǎn)廠家或第三方廠家,以O(shè)PC服務(wù)器的形式提供給用戶,解決了軟、硬件廠商的矛盾,完成了系統(tǒng)的集成,提高了系統(tǒng)的開(kāi)放性和可互操作性。
OPC服務(wù)器通常支持兩種類型的訪問(wèn)接口,它們分別為不同的編程語(yǔ)言環(huán)境提供訪問(wèn)機(jī)制。這兩種接口是:自動(dòng)化接口(Automation interface);自定義接口(Custom interface)。自動(dòng)化接口通常是為基于腳本編程語(yǔ)言而定義的標(biāo)準(zhǔn)接口,可以使用VisualBasic、Delphi、PowerBuilder等編程語(yǔ)言開(kāi)發(fā)OPC服務(wù)器的客戶應(yīng)用。而自定義接口是專門為C++等高級(jí)編程語(yǔ)言而制定的標(biāo)準(zhǔn)接口。
工業(yè)控制領(lǐng)域用到大量的現(xiàn)場(chǎng)設(shè)備,在OPC出現(xiàn)以前,軟件開(kāi)發(fā)商需要開(kāi)發(fā)大量的驅(qū)動(dòng)程序來(lái)連接這些設(shè)備。即使硬件供應(yīng)商在硬件上做了一些小小改動(dòng),應(yīng)用程序就可能需要重寫;同時(shí),由于不同設(shè)備甚至同一設(shè)備不同單元的驅(qū)動(dòng)程序也有可能不同,軟件開(kāi)發(fā)商很難同時(shí)對(duì)這些設(shè)備進(jìn)行訪問(wèn)以優(yōu)化操作。硬件供應(yīng)商也在嘗試解決這個(gè)問(wèn)題,然而由于不同客戶有著不同的需要,同時(shí)也存在著不同的數(shù)據(jù)傳輸協(xié)議,因此也一直沒(méi)有完整的解決方案。
自O(shè)PC提出以后,這個(gè)問(wèn)題終于得到解決。OPC規(guī)范包括OPC服務(wù)器和OPC客戶兩個(gè)部分,其實(shí)質(zhì)是在硬件供應(yīng)商和軟件開(kāi)發(fā)商之間建立了一套完整的“規(guī)則”,只要遵循這套規(guī)則,數(shù)據(jù)交互對(duì)兩者來(lái)說(shuō)都是透明的,硬件供應(yīng)商無(wú)需考慮應(yīng)用程序的多種需求和傳輸協(xié)議,軟件開(kāi)發(fā)商也無(wú)需了解硬件的實(shí)質(zhì)和操作過(guò)程。OPC現(xiàn)已成為工業(yè)界系統(tǒng)互聯(lián)的缺省方案,為工業(yè)監(jiān)控編程帶來(lái)了便利,用戶不用為通訊協(xié)議的難題而苦惱。任何一家自動(dòng)化軟件解決方案的提供者,如果它不能全方位地支持OPC,則必將被歷史所淘汰。
組態(tài)王充分利用了OPC服務(wù)器的強(qiáng)大性能,為工程人員提供方便高效的數(shù)據(jù)訪問(wèn)能力。在組態(tài)王中可以同時(shí)掛接任意多個(gè)OPC服務(wù)器,每個(gè)OPC服務(wù)器都被作為一個(gè)外部設(shè)備,工程人員可以定義、增加或刪除它,如同一個(gè)PLC或儀表設(shè)備一樣。
組態(tài)王在原有的OPC客戶端的基礎(chǔ)上添加了OPC服務(wù)器的功能,實(shí)現(xiàn)了組態(tài)王對(duì)OPC的服務(wù)器和客戶端的統(tǒng)一。通過(guò)組態(tài)王OPC服務(wù)器功能,用戶可以更方便的實(shí)現(xiàn)其他支持OPC客戶的應(yīng)用程序與組態(tài)王之間的數(shù)據(jù)通訊和調(diào)用。
為了方便用戶使用組態(tài)王的OPC服務(wù)器功能,使用戶無(wú)需在無(wú)其它需求的情況下再另外購(gòu)買OPC客戶端軟件,組態(tài)王提供了一整套與組態(tài)王的OPC服務(wù)器連接的函數(shù)接口,這些函數(shù)可通過(guò)提供的動(dòng)態(tài)庫(kù)KingvewCliend.dll來(lái)實(shí)現(xiàn)。用戶使用該動(dòng)態(tài)庫(kù)可以用VB、VC等編程語(yǔ)言編制自己的OPC客戶端程序。
OPC客戶端程序是使用VB6.0編寫的。圖2給出了一個(gè)OPC客戶端例程的流程圖,簡(jiǎn)要說(shuō)明如下:
在用戶工程中,首先應(yīng)聲明對(duì)動(dòng)態(tài)庫(kù)KingvewCliend.dll中的函數(shù)接口的引用:
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
定義兩個(gè)全局變量ginta、gintb作為系統(tǒng)運(yùn)行時(shí)讀項(xiàng)目名稱、讀采集列中變量實(shí)時(shí)值的循環(huán)次數(shù)。
根據(jù)設(shè)計(jì)好的用戶窗體,將各個(gè)函數(shù)連接到相應(yīng)的預(yù)定義過(guò)程中:首先,調(diào)用StartCliend()函數(shù)啟動(dòng)與OPC服務(wù)器的連接,可通過(guò)該函數(shù)的pNode參數(shù)來(lái)控制與哪臺(tái)計(jì)算機(jī)的組態(tài)王進(jìn)行連接;然后,調(diào)用ReadItemNo()函數(shù),將返回的組態(tài)王OPC中列出的項(xiàng)目總數(shù)賦值給ginta;再以ginta為循環(huán)次數(shù),依次調(diào)用GetItemNames()函數(shù)來(lái)獲得項(xiàng)目的名稱,并以列表框顯示所有項(xiàng)目的名稱;接著,調(diào)用AddTag()函數(shù)將用戶選擇采集的變量添加到采集列,并在用于數(shù)據(jù)顯示的控件MSHFlexGrid中顯示已選的項(xiàng)目變量、變量數(shù)據(jù)類型、變量采集的標(biāo)識(shí)號(hào)等,同時(shí)累計(jì)采集列中的項(xiàng)目數(shù)賦值給gintb;最后,利用定時(shí)器定義數(shù)據(jù)采集頻率,當(dāng)定時(shí)器事件發(fā)生時(shí),以gintb為循環(huán)次數(shù)、變量采集標(biāo)識(shí)號(hào)為參數(shù),依次調(diào)用ReadTag()函數(shù),讀取所選定的項(xiàng)目變量的數(shù)據(jù),并顯示在MSHFlexGrid控件中;退出客戶端程序時(shí),通過(guò)調(diào)用StopCliend()函數(shù),斷開(kāi)與組態(tài)王OPC服務(wù)器的連接。
目前,OPC技術(shù)及標(biāo)準(zhǔn)已在各個(gè)領(lǐng)域中被廣泛應(yīng)用,OPC技術(shù)賦予了現(xiàn)代工業(yè)控制軟件更強(qiáng)的生命活力。本文介紹的高爐測(cè)控系統(tǒng)中利用組態(tài)王6.0作OPC服務(wù)器,編制客戶端程序的方法,能夠滿足高爐工藝參數(shù)與工廠管理信息網(wǎng)交互數(shù)據(jù)的需求,充分展示了系統(tǒng)的開(kāi)放性,具有廣泛的應(yīng)用前景。
[1]北京亞控自動(dòng)化軟件科技有限公司.KingView 6.0用戶手冊(cè)[Z].2001.
[2]鴻志工作組.Visual Basic 6.0中文版應(yīng)用與開(kāi)發(fā)[M].北京:科學(xué)出版社,1999.