蘇 毅,李明霞
(廣西計量檢測研究院,廣西 南寧 530007)
虛擬儀表是計算機資源、模塊化功能硬件與用于數(shù)據(jù)分析、過程通信及圖形用戶界面的應用軟件的有機結合。它通過采集現(xiàn)場數(shù)據(jù),利用軟件在屏幕上生成各種儀表面板,完成對數(shù)據(jù)的處理、表達、傳送、存儲、顯示等功能[1]。高效的軟件,模塊化的I/O硬件和數(shù)據(jù)傳輸網(wǎng)絡是構建虛擬儀表系統(tǒng)的關鍵。本文以糖廠虛擬儀表系統(tǒng)開發(fā)為例,介紹虛擬儀表系統(tǒng)的開發(fā)過程和方法。
控制器局域網(wǎng)絡(controller area network,CAN),是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡,為分布式控制系統(tǒng)實現(xiàn)各節(jié)點之間實時、可靠、靈活的數(shù)據(jù)通信提供了強有力的技術支持?;贑AN總線的分布式控制系統(tǒng)在以下3方面具有明顯的優(yōu)越性[2]:
(1)CAN控制器的工作為多主方式,網(wǎng)絡中的各節(jié)點都可根據(jù)總線訪問優(yōu)先權(取決于報文標識符),采用無損結構的逐位仲裁的方式競爭向總線發(fā)送數(shù)據(jù)。CAN協(xié)議廢除了站地址編碼,取而代之的是對通信數(shù)據(jù)進行編碼,這可使不同的節(jié)點同時接收到相同的數(shù)據(jù)。這些特點使得CAN總線構成的網(wǎng)絡各節(jié)點之間的數(shù)據(jù)通信實時性強,并且容易構成冗余結構,提高系統(tǒng)的可靠性和靈活性。
(2)CAN總線通過總線收發(fā)器接口芯片82C250的兩個輸出端CANH和CANL與物理總線相連,CANH端的狀態(tài)只能是高電平或懸浮狀態(tài),CANL端只能是低電平或懸浮狀態(tài)。這就保證不會出現(xiàn)當系統(tǒng)有錯誤、多節(jié)點同時向總線發(fā)送數(shù)據(jù)時,導致總線短路,從而損壞某些節(jié)點的現(xiàn)象。而且CAN節(jié)點在錯誤嚴重的情況下具有自動關閉輸出功能,以使總線上其他節(jié)點的操作不受影響,從而保證不會出現(xiàn)在網(wǎng)絡中因個別節(jié)點出現(xiàn)問題,使得總線處于“死鎖”狀態(tài)。
(3)CAN的完善的通信協(xié)議可由CAN控制器芯片及其接口芯片來實現(xiàn),從而大大降低系統(tǒng)開發(fā)難度,縮短了開發(fā)周期。另外,CAN總線是具有通信速率高、容易實現(xiàn)、且性價比高等諸多特點,是一種已形成國際標準的現(xiàn)場總線。
虛擬儀表利用軟件在屏幕上生成各種儀表面板,完成對數(shù)據(jù)的處理、表達、傳送、存儲、顯示等功能。與傳統(tǒng)儀表相比,其主要優(yōu)點是可以由用戶自己定義、設計儀表系統(tǒng),以滿足不同的要求,使儀表的功能更加強大、靈活,而且很容易同網(wǎng)絡、外設及其他應用相連接。這樣既降低了價格,節(jié)省開發(fā)、維護的費用,又縮短了技術開發(fā)周期。虛擬儀表的關鍵技術就是應用軟件,這是因為虛擬儀表的主要功能是由軟件來體現(xiàn)的,即“軟件就是儀表”。通過虛擬儀表,工業(yè)設備變得越來越簡單,功能越來越強,并將在未來的工業(yè)發(fā)展中起到主導的作用[3]。
針對糖廠監(jiān)控的生產(chǎn)參數(shù)多、工藝變化多、位置分散的特點,選擇協(xié)議簡單開放、容錯能力強、實時性高、安全性好、成本低、適于頻繁交換的CAN總線構建數(shù)據(jù)通信網(wǎng)絡。虛擬儀表系統(tǒng)由中央虛擬儀表單元和現(xiàn)場采集單元構成(見圖1)[4-5]?,F(xiàn)場采集單元由工控機及采集、存儲、顯示和CAN通信模塊組成,對糖廠各車間測量儀器進行數(shù)據(jù)的實時采集,完成數(shù)據(jù)調(diào)理、存貯和通信;中央虛擬儀表單元可以從現(xiàn)場采集單元獲取數(shù)據(jù)并完成數(shù)據(jù)監(jiān)測、數(shù)據(jù)統(tǒng)計、報表、打印及數(shù)據(jù)庫管理。在這個網(wǎng)絡中,中央虛擬儀表單元處于主控位置,而現(xiàn)場采集單元可以隨時響應中央監(jiān)控單元的命令。
Iocomp Components是一個面向仿真、工業(yè)自動化、科學、儀表等數(shù)據(jù)圖形領域的通用組件包。包含了豐富的應用在Delphi等Windows開發(fā)工具的嵌入式控件,包括各種形式的報警器、測量、棒圖、LED、儀表、數(shù)碼管、計數(shù)器、百分比、選擇器、滑塊、開關、趨勢圖形等48種面板指示控件,提供一個強大的虛擬儀器儀表工具庫,可以方便快捷地開發(fā)出各種人機界面友好的工業(yè)控制軟件,是一款很實用的虛擬儀表開發(fā)組件。
串口通信控件Spcomm是Delphi實現(xiàn)串口通信的較簡單的方法,該控件具有豐富的與串口通信密切相關的屬性及事件,提供了對串口的各種操作,而且支持多線程。
圖1 虛擬儀表網(wǎng)絡結構
中央虛擬儀表單元采用Delphi可視化開發(fā)平臺,嵌入Iocomp組件實現(xiàn)虛擬儀表功能和界面。分為界面、事務處理、數(shù)據(jù)庫3層結構,見圖2。界面部分實現(xiàn)虛擬儀表的界面顯示和與系統(tǒng)相關的可視化操作界面;事務處理部分負責工控機與工控機-CAN適配器節(jié)點間的通信、數(shù)據(jù)統(tǒng)計與分析、報表處理和數(shù)據(jù)庫管理與備份等。工控機-CAN適配器在系統(tǒng)中負責實現(xiàn)CAN協(xié)議和RS232串口協(xié)議的轉(zhuǎn)換,由CAN總線通信模塊和串口通信模塊組成。
圖2 中央虛擬儀表單元系統(tǒng)層次圖
現(xiàn)場采集單元,可分為CAN總線驅(qū)動模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)分析模塊和驅(qū)動外設模塊,見圖3。其中,CAN總線驅(qū)動模塊負責CAN接口控制器的配置,實現(xiàn)與網(wǎng)絡中其他節(jié)點在CAN協(xié)議下的通信;數(shù)據(jù)采集模塊負責現(xiàn)場各種數(shù)據(jù)的采集;數(shù)據(jù)分析模塊負責對所采集的各種數(shù)據(jù)進行分析并給出結果;驅(qū)動外設模塊負責執(zhí)行來自中央虛擬儀表單元的命令,各驅(qū)動外部聯(lián)動設備及時接收并執(zhí)行。
圖3 現(xiàn)場采集單元軟件功能模塊
(1)工控組件Iocomp的安裝。在Windows平臺下安裝Delphi7.0,然后安裝工控組件Iocomp:用Delphi打開Iocomp70.dpk文件→點擊Compile→點擊install即可。圖4是安裝好的Iocomp組件。
(2)在Delphi下安裝串口通信控件Spcomm。選擇Delphi7.0的“Component”菜單,點擊“Install Component...”菜單項,然后在彈出的Into existing package屬性頁中Unit file name輸人框中選擇SPCOMM.pas文件,單擊兩次“OK”按鈕后,就可以將Spcomm控件安裝到Delphi7.0的System組件頁上。
(3)根據(jù)需求,在delphi7.0下,用Iocomp控件設計編碼虛擬儀表的界面和屬性[6-7],如圖5所示。然后,借助Spcomm控件,實現(xiàn)與PC-CAN適配器的通信,讀取現(xiàn)場采集單元通過CAN總線傳送的測量設備數(shù)據(jù)。
(4)Spcomm控件串口通信的實現(xiàn)。Spcomm串行通信控件具有多線程的特性,接收和發(fā)送數(shù)據(jù)分別在兩個線程內(nèi)完成,接收線程負責收到數(shù)據(jù)時觸發(fā) OnReceiveData事件;用 WriteCommData()函數(shù)將待發(fā)送的數(shù)據(jù)寫入輸出緩沖器,發(fā)送線程在后臺完成數(shù)據(jù)發(fā)送工作。在接收和發(fā)送數(shù)據(jù)前需要初始化串口,用StartComm方法打開串口,退出程序時用StopComm方法關閉串口。實現(xiàn)PC機與PC-CAN適配器之間的數(shù)據(jù)發(fā)送及接收需要以下5 個步驟[8]:
1)初始化并打開串口。需要選擇本次通信使用的串口,確定通信協(xié)議,即設置波特率、校驗方式、數(shù)據(jù)位、停止位等屬性,打開該串口。示例代碼如下:
圖4 Iocomp組件
圖5 虛擬儀表界面
2)建立握手信號。實現(xiàn)PC機與下位機之間的通信,首先要調(diào)通它們之間的握手信號,握手信號可以隨意選擇某特定字符串。當PC發(fā)出這樣一幀數(shù)據(jù)后,通過接收事件能收到下位機返回的這一幀數(shù)據(jù)或特定的某字符串,則表示握手成功,系統(tǒng)通信正常,兩者之間就可以按照協(xié)議相互傳輸數(shù)據(jù);否則需重新建立握手信號。
3)發(fā)送數(shù)據(jù)。在編寫基于串口的計算機工業(yè)測控時,通常需要由PC機向下位機發(fā)送命令以控制下位機的行為,同時向下位機發(fā)送有關數(shù)據(jù)。利用Spcomm串口控件向下位機發(fā)送數(shù)據(jù)示例代碼如下:
4)接收數(shù)據(jù)。在編寫基于串口的計算機工業(yè)測控時,通常需要由下位機向PC機發(fā)送數(shù)據(jù),以使PC機了解系統(tǒng)的測試數(shù)據(jù)或下位機的運行狀態(tài),并進而控制下位機的行為。利用Spcomm串口控件接收下位機發(fā)送的數(shù)據(jù)信息的示例代碼如下:
5)關閉串口。在系統(tǒng)開發(fā)中,應注意在不使用串口時及時關閉串口,釋放系統(tǒng)資源,否則可能會影響系統(tǒng)的其他應用。關閉串口的代碼如下:
采用CAN總線技術和虛擬儀表技術相結合的設計思路,實現(xiàn)了糖廠生產(chǎn)車間技術參數(shù)的實時檢測和動態(tài)顯示,以及數(shù)據(jù)傳輸?shù)姆€(wěn)定性、安全性、準確性、實時性滿足制糖企業(yè)要求,達到了集中監(jiān)控的目的。虛擬儀表給用戶很大的自由度,可以隨時通過虛擬儀表軟件設計增加或刪除儀表,節(jié)省大量的硬件資源。虛擬儀表利用可視化編程環(huán)境,設計通用的圖形化軟儀表面板,方便實現(xiàn)測量儀器的自動化、智能化,具有廣泛的應用前景。
[1]龔崇權.基于現(xiàn)場總線技術的虛擬儀器開發(fā)[J].微計算機信息,2006,22(2):177-178.
[2]饒運濤,鄒繼軍.現(xiàn)場總線CAN原理與應用[M].北京:北京航空航天大學出版社,2003.
[3]朱祖濤,茅大鈞,毛靜濤.虛擬儀表與虛擬多用表的設計原理[J].上海電力學院學報,2001,17(2):31-34.
[4]李訓文,曹國華,常鍵.基于虛擬儀器的特性測試參數(shù)數(shù)據(jù)庫的設計與實現(xiàn)[J].電子工程師,2007,33(5):9-11.
[5]任鑫,楊建國.基于虛擬儀器技術的溫度監(jiān)控系統(tǒng)的研發(fā)[J].微計算機信息,2009,25(10):89-90.
[6]蒙燕玫,蘇建軍.甘蔗煮糖過程參數(shù)自動監(jiān)測系統(tǒng)的研究[J].機械與電子,2008(12):28-30.
[7]許江淳,許曉平.低成本自動化系統(tǒng)在糖廠工藝參數(shù)監(jiān)控中的應用[J].微計算機信息,2004,20(9):12-13.
[8]周果宏,羅述謙,羅起.Delphi程序設計[M].北京:清華大學出版社,2001.