LabVIEW在串口通信中的應(yīng)用
LabVIEW是當(dāng)今最流行的圖形化編程環(huán)境,由于其采用圖形化的編程方式,因此也被稱作G語(yǔ)言(graphical language)。LabVIEW是目前國(guó)際上唯一的基于數(shù)據(jù)流的編譯型開發(fā)軟件,與基于文本的編程語(yǔ)言不同,LabVIEW的程序由圖形語(yǔ)言構(gòu)成,用簡(jiǎn)單或圖標(biāo)提示的方法選擇功能(圖形),并用線條把各種功能(圖形)連接起來(lái)的簡(jiǎn)單圖形編程方式,使得不熟悉編程的工程技術(shù)人員都可以按照測(cè)試要求和任務(wù)快速“畫”出自己的程序,“畫”出儀器面板,從而大大提高了工作效率,減輕了科研和工程技術(shù)人員的工作量。由于LabVIEW軟件簡(jiǎn)潔直觀,功能強(qiáng)大靈活,目前廣泛應(yīng)用于自動(dòng)化測(cè)量系統(tǒng)、工業(yè)過(guò)程自動(dòng)化、實(shí)驗(yàn)室仿真等各個(gè)領(lǐng)域。
在LabVIEW中編制的程序叫做虛擬儀器程序,簡(jiǎn)稱VI。一個(gè)VI包括前面板和框圖程序。前面板類似實(shí)際儀表面板,可以放置諸如旋鈕、按鈕和文本框等控制和顯示元件??驁D程序是實(shí)現(xiàn)程序功能的核心部分,包括以圖標(biāo)為代表的常數(shù)、函數(shù)和VI程序等,并通過(guò)連線引導(dǎo)數(shù)據(jù)流,編寫和調(diào)試程序都很直觀方便。
一 : LabVIEW串口通信介紹
儀器控制是LabVIEW最具競(jìng)爭(zhēng)力的核心技術(shù)之一。在安裝了適當(dāng)?shù)挠布?qū)動(dòng)程序之后,LabVIEW能輕松實(shí)現(xiàn)與任何NI提供的硬件設(shè)備通信。不僅如此,通過(guò)通用的驅(qū)動(dòng)程序(DAQmx)或接口,例如VISA、IVI、OPC、ActiveX、DLL等,LabVIEW幾乎能與任何廠商甚至自制的硬件通信。
LabVIEW通過(guò)VISA與串行接口儀器通信。VISA是應(yīng)用于儀器編程的標(biāo)準(zhǔn)I/O應(yīng)用程序接口(API),它本身并不具有儀器編程能力,而是為用戶提供了一套獨(dú)立的可方便調(diào)用的標(biāo)準(zhǔn)I/O底層函數(shù)。無(wú)論對(duì)于GPIB、串口還是其他接口,用戶只要調(diào)用這些標(biāo)準(zhǔn)函數(shù),則VISA就會(huì)根據(jù)實(shí)際接口類型自動(dòng)調(diào)取相應(yīng)的接口驅(qū)動(dòng)程序例程,方便實(shí)現(xiàn)上層應(yīng)用程序與接口總線儀器的通信。在LabVIEW里使用VISA,必須安裝NI-VISA程序包,安裝后,與串口通信相關(guān)的VISA函數(shù)位于Functions->ALL Functions->Instrument I/O->Serial子模板上,如圖1所示。
此主題相關(guān)圖片如下:
圖1VISA串口通信函數(shù)
此模板共有8個(gè)操作函數(shù),其中,第一行的4個(gè)函數(shù)在串口通信中經(jīng)常應(yīng)用。下面簡(jiǎn)單介紹這4個(gè)常用的VISA串口函數(shù)。
1 VISA配置串口 設(shè)定波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位、流控制、超時(shí)處理、終止符和終止符使能等參數(shù),將VISA資源名稱指定的串口按特定設(shè)置初始化。 注意:超時(shí)(TIMEOUT)和終止符兩個(gè)參數(shù)。TIMEOUT默認(rèn)10秒;終止符是0X0A(),默認(rèn)是使能狀態(tài)。另外,回車0X0D()也經(jīng)常作為終止符。采用二進(jìn)制通信,就要特別注意終止符的情況。因?yàn)椋埃翆?duì)應(yīng)的十進(jìn)制是10,0D是13,當(dāng)傳輸?shù)亩M(jìn)制對(duì)應(yīng)的十進(jìn)制剛好為10或13時(shí),如果不禁止終止符,會(huì)導(dǎo)致“VISA讀取”提前結(jié)束,產(chǎn)生錯(cuò)誤的結(jié)果。因此,經(jīng)常要把“啟動(dòng)終止符”的布爾輸入設(shè)置為“F”。
2 VISA寫入 將“寫入緩沖區(qū)”的數(shù)據(jù)寫入VISA資源名稱指定的串口。 注意:MSCOMM串口通信可以選擇文本或二進(jìn)制方式接收或發(fā)送數(shù)據(jù),但是,VISA通信接收或發(fā)送數(shù)據(jù)都是字符串(ASCII)。若接收或發(fā)送的字符串是“1、2、3、4”,在內(nèi)存中存儲(chǔ)的是ASCII,因?yàn)?ldquo;1”=31(十六進(jìn)制)、“2”=32(十六進(jìn)制)、“3”=33(十六進(jìn)制)和“4”=34(十六進(jìn)制),所以串口緩存接收/發(fā)送的數(shù)據(jù)實(shí)際是16進(jìn)制的31、32、33、34。
3 VISA讀取從VISA資源名稱所指定的串口中讀取指定字節(jié)的數(shù)據(jù),并將數(shù)據(jù)返回至讀取緩沖區(qū)。有時(shí)不知道串口緩存區(qū)有多少字節(jié)的數(shù)據(jù),以防字節(jié)總數(shù)設(shè)置錯(cuò)誤,這時(shí)字節(jié)總數(shù)可以用屬性節(jié)點(diǎn)獲取,即把屬性節(jié)點(diǎn)輸出端子接入“VISA讀取”節(jié)點(diǎn)的輸入端子“字節(jié)總數(shù)”。
4 VISA關(guān)閉關(guān)閉VISA資源名稱指定的串口會(huì)話句柄或事件對(duì)象。
二:串口通信編程實(shí)踐
JCZ型智能轉(zhuǎn)矩轉(zhuǎn)速傳感器是湖南湘儀動(dòng)力測(cè)試儀器有限公司利用美國(guó)ECHELON公司的LonWorks技術(shù)在原JC型轉(zhuǎn)矩轉(zhuǎn)速傳感器基礎(chǔ)上設(shè)計(jì)制造的新一代產(chǎn)品,它的外形結(jié)構(gòu)如圖2所示。JCZ型智能轉(zhuǎn)矩轉(zhuǎn)速傳感器具有高精度、高可靠性的優(yōu)點(diǎn),同時(shí),它還具有自動(dòng)零點(diǎn)補(bǔ)償,自動(dòng)隨環(huán)境溫度修正傳感器系數(shù)等智能化特性,在轉(zhuǎn)速很低時(shí)也能精確測(cè)量轉(zhuǎn)速。當(dāng)使用LonWorks網(wǎng)絡(luò)傳輸時(shí),通訊距離可達(dá)到2公里,還可以很方便地與計(jì)算機(jī)及其它智能傳感器或智能節(jié)點(diǎn)組成測(cè)控網(wǎng)絡(luò)系統(tǒng)。目前,JCZ型智能轉(zhuǎn)矩轉(zhuǎn)速傳感器在電機(jī)、風(fēng)機(jī)、機(jī)車、汽車、礦山機(jī)械等許多生產(chǎn)部門中廣泛應(yīng)用。
此主題相關(guān)圖片如下:
圖2JCZ型智能轉(zhuǎn)矩轉(zhuǎn)速傳感器外形結(jié)構(gòu)圖
JCZ型轉(zhuǎn)矩轉(zhuǎn)速傳感器的基本原理是:通過(guò)彈性軸、兩組磁電信號(hào)發(fā)生器,把被測(cè)轉(zhuǎn)矩、轉(zhuǎn)速轉(zhuǎn)換成具有相位差的兩組交流電信號(hào),這兩組交流電信號(hào)的頻率相同且與軸的轉(zhuǎn)速成正比,而其相位差的變化部分又與被測(cè)轉(zhuǎn)矩成正比。因此,通過(guò)分析這兩組交流電的頻率和相差信號(hào)就可以實(shí)現(xiàn)轉(zhuǎn)矩和轉(zhuǎn)速的測(cè)量。電信號(hào)處理部分是以ECHELON公司的3150神經(jīng)元芯片為核心組成,把電信號(hào)處理成可利用雙絞線等傳輸介質(zhì)進(jìn)行網(wǎng)絡(luò)傳輸?shù)木W(wǎng)絡(luò)變量,或者處理成直接可與計(jì)算機(jī)RS-232串口通信的信號(hào)。本文JCZ型轉(zhuǎn)矩轉(zhuǎn)速傳感器使用異步串行通信接口,其數(shù)據(jù)格式為1個(gè)起始位,8位數(shù)據(jù),無(wú)校驗(yàn)位,1個(gè)停止位,波特率為4800bps。因此,設(shè)置完串口通信參數(shù)后,通過(guò)專門配置的信號(hào)線,此傳感器的輸出信號(hào)就可以送到計(jì)算機(jī)中。
JCZ型轉(zhuǎn)矩轉(zhuǎn)速傳感器發(fā)送16進(jìn)制顯示的字符串來(lái)表示各種指令代碼及數(shù)據(jù),每次發(fā)送的數(shù)據(jù)包共計(jì)21字節(jié),起始段為字符A,占1字節(jié);接下分別為轉(zhuǎn)矩和轉(zhuǎn)速,每個(gè)數(shù)據(jù)占10字節(jié),具體如下表所示:
頭“A”(1byte) | 轉(zhuǎn)矩?cái)?shù)據(jù) (10byte) | 轉(zhuǎn)速數(shù)據(jù) (10byte) |
假如串口接收的一個(gè)數(shù)據(jù)包為41 34 31 2E 31 38 37 31 30 30 30 32 36 2E 32 33 36 30 30 30 30等21字節(jié)十六進(jìn)制數(shù)。其中,頭字節(jié)41,剛好是字符A的十六進(jìn)制表示;接下從34 31~30這10字節(jié),為字符顯示的字符串41.235的十六進(jìn)制表示,而41.235即為實(shí)際轉(zhuǎn)矩?cái)?shù)據(jù);從32、36~30這最后10個(gè)字節(jié)轉(zhuǎn)換為字符顯示的字符串后可得到實(shí)際的轉(zhuǎn)速值。因此,要注意把串口接收的數(shù)據(jù)包先進(jìn)行字節(jié)分離,再分別轉(zhuǎn)換為字符顯示的字符串,所得到值才是實(shí)際的物理量。
評(píng)論