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