張高巍 張偉維
摘要:本文針對(duì)挪威生產(chǎn)的STIM202高速率MEMS陀螺儀的數(shù)據(jù)采集方法進(jìn)行了研究,采用一種新的LABVIEWE+MATLAB的混合編程方式,在LABVIEW中使用生產(chǎn)者與消費(fèi)者循環(huán),解決了高傳輸速率下一般采集方式中存在的緩沖區(qū)數(shù)據(jù)丟包問(wèn)題,在MATLAB中進(jìn)行批量數(shù)據(jù)運(yùn)算,提高了效率,達(dá)到了數(shù)據(jù)采集中實(shí)時(shí)性和準(zhǔn)確性的要求。該方法對(duì)其他的陀螺儀數(shù)據(jù)采集也適用,因此,為試驗(yàn)場(chǎng)下一步的慣性導(dǎo)航設(shè)備的數(shù)據(jù)采集提供了可行方法。
關(guān)鍵詞:MEMS;LABVIEW;慣性器件;數(shù)據(jù)采集
中圖分類號(hào):TN967.1? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? 文章編號(hào):1007-9416(2018)10-0000-00
近年來(lái),隨著試驗(yàn)場(chǎng)試驗(yàn)項(xiàng)目的日益拓展,以及試驗(yàn)要求的不斷提高,試驗(yàn)場(chǎng)測(cè)量指標(biāo)隨之增多,測(cè)量精度逐步提升。定位測(cè)量裝備作為獲取試驗(yàn)場(chǎng)第一手真值數(shù)據(jù)的主要手段,也需要不斷創(chuàng)新,增加設(shè)備功能,提高技術(shù)指標(biāo),才能滿足試驗(yàn)場(chǎng)不斷發(fā)展的需要。目前,相較以往對(duì)試驗(yàn)場(chǎng)測(cè)量裝備的需求,最明顯的特征有兩個(gè),一是測(cè)量精度及實(shí)時(shí)性提高,二是增加了對(duì)角度(包括航向、俯仰及橫滾角)精度的檢驗(yàn)。為解決這兩個(gè)問(wèn)題,試驗(yàn)場(chǎng)測(cè)量設(shè)備由原來(lái)的單一GPS測(cè)量設(shè)備向衛(wèi)星定位設(shè)備與慣性導(dǎo)航設(shè)備的組合定位方式轉(zhuǎn)變是一條可行的捷徑。
在慣性導(dǎo)航中,陀螺儀的數(shù)據(jù)采集問(wèn)題是最基本也是最關(guān)鍵的問(wèn)題,通常可用C語(yǔ)言、LABVIEWE語(yǔ)言及MATLAB等編程實(shí)現(xiàn),但單一的編程解決方案不理想,本文中以一種MEMS陀螺儀的數(shù)據(jù)采集為例,采用LABVIEWE+MATLAB的混合編程方式,解決了單一編程中的諸多問(wèn)題,提高數(shù)據(jù)采集效率,實(shí)現(xiàn)了快速、準(zhǔn)確地采集數(shù)據(jù)。該方法也使用于其他陀螺儀的數(shù)據(jù)采集。
1 STIM202 MEMS陀螺儀簡(jiǎn)介
MEMS陀螺儀是隨著MEMS技術(shù)的發(fā)展所出現(xiàn)的一類新型慣性器件[1]。具有體積小、成本低、重量輕、可靠性高等優(yōu)點(diǎn),受到國(guó)內(nèi)外相關(guān)領(lǐng)域和部門的高度重視,很多國(guó)家都投入了大量的人力、物力、財(cái)力進(jìn)行研究,近年來(lái),隨著MEMS應(yīng)用的不斷深入,其地位已經(jīng)上升至一種戰(zhàn)略高度,MEMS陀螺儀呈現(xiàn)出數(shù)字化、高傳輸速率等新的特點(diǎn), STIM202就是其中的典型代表。STIM202 MEMS陀螺儀由挪威SENSONOR公司于2010年量產(chǎn),是目前業(yè)界已知最高精度多軸MEMS陀螺,性價(jià)比優(yōu)于同精度等級(jí)FOG光纖陀螺。
其主要技術(shù)指標(biāo)為:(1)量程: 0~±400°/s;(2)零偏穩(wěn)定性:<0.00014°/s;(3)全溫偏差穩(wěn)定性:<±0.008°/s;(4)沖擊:1500g;(5)工作溫度:-40℃ ~+50℃;(6)RS422數(shù)字輸出,波特率為460800bps,采樣頻率為1KHz。
針對(duì)MEMS陀螺出現(xiàn)的新特點(diǎn),傳統(tǒng)的單循環(huán)采集方式顯得力不從心,其準(zhǔn)確性和實(shí)時(shí)性均得不到保證。主要表現(xiàn)在緩沖區(qū)數(shù)據(jù)丟包的問(wèn)題上,本文針對(duì)這些問(wèn)題,以STIM202為例,對(duì)其數(shù)據(jù)采集系統(tǒng)進(jìn)行研究[2]。要對(duì)陀螺儀進(jìn)行數(shù)據(jù)采集,必須解決兩方面的問(wèn)題:接口匹配和高速數(shù)據(jù)的實(shí)時(shí)處理。前者通過(guò)硬件方式來(lái)解決,后者通過(guò)軟件來(lái)實(shí)現(xiàn),其中包括對(duì)實(shí)時(shí)性和準(zhǔn)確性問(wèn)題的解決。
2 硬件實(shí)現(xiàn)
硬件由pc機(jī)作為上位機(jī),陀螺儀作為測(cè)量?jī)x器,硬件主要是完成接口匹配問(wèn)題。由于STIM202采用的是RS422雙工差分式傳輸,波特率為460800bps,計(jì)算機(jī)的RS232串口沒(méi)有這么高的波特率。因此,采用傳統(tǒng)的RS422/232轉(zhuǎn)換器不能滿足要求。而計(jì)算機(jī)的USB口支持高傳輸速率,因此硬件上采用TEK生產(chǎn)的UT805轉(zhuǎn)換器,利用其自帶的驅(qū)動(dòng),虛擬出一個(gè)串口,實(shí)現(xiàn)RS422信號(hào)的轉(zhuǎn)換。
3 軟件實(shí)現(xiàn)
軟件采用LABVIEW+MATLAB混合式編程,由于LABVIEW對(duì)于一些需要進(jìn)行大量數(shù)據(jù)運(yùn)算處理的復(fù)雜應(yīng)用以及某些復(fù)雜的控制算法顯得有些力不從心。而MATLAB不能實(shí)現(xiàn)端口操作和實(shí)時(shí)控制,在界面方面也稍遜一籌。因此,將二者結(jié)合起來(lái)取長(zhǎng)補(bǔ)短, 具有非常實(shí)用的價(jià)值[3]。本文針對(duì)高速率MEMS陀螺的特點(diǎn),采用了生產(chǎn)者與消費(fèi)者循環(huán)作為程序的基本框架,將數(shù)據(jù)的讀取和處理分成兩個(gè)部分同時(shí)進(jìn)行,這種方法與傳統(tǒng)采集方法相比,具有執(zhí)行效率高的特點(diǎn),可以有效解決緩沖區(qū)的丟包問(wèn)題。
3.1 軟件流程
在LABVIEW中主要完成前面板搭建、串口配置、數(shù)據(jù)讀取、存儲(chǔ)和各種條件、循環(huán)的搭建工作,MATLAB主要完成數(shù)據(jù)解算、濾波、誤差補(bǔ)償、閾值解算、運(yùn)動(dòng)模式判別、角度解算等工作。其流程圖如圖1所示。
3.2 具體實(shí)現(xiàn)
3.2.1 數(shù)據(jù)的采集、存放和轉(zhuǎn)換
LABVIEW中采集、存放數(shù)據(jù)主要運(yùn)用了串口緩沖區(qū)、隊(duì)列和數(shù)組來(lái)完成。串口采用LABVIEW中的VISA模塊,緩沖區(qū)負(fù)責(zé)接收從陀螺儀傳來(lái)的數(shù)據(jù),并通過(guò)VISA讀取函數(shù)將數(shù)據(jù)送入隊(duì)列,隊(duì)列起到了在高速率下按照順序保存、傳輸數(shù)據(jù)的作用,按照先進(jìn)先出的原則,通過(guò)元素出隊(duì)列將數(shù)據(jù)送出,最后將數(shù)據(jù)送入MATLAB腳本進(jìn)行處理。通過(guò)字符串至字節(jié)數(shù)組轉(zhuǎn)換函數(shù),將隊(duì)列中的元素轉(zhuǎn)換為十六進(jìn)制數(shù)組,通過(guò)數(shù)組插入函數(shù)將一次循環(huán)中未處理完的數(shù)據(jù)插入到下一組數(shù)組的前面,保證了數(shù)組元素的連續(xù)性和準(zhǔn)確性。
3.2.2 數(shù)據(jù)處理流程
采用生產(chǎn)者與消費(fèi)者循環(huán),該設(shè)計(jì)模式可以有多個(gè)并行循環(huán), 每個(gè)循環(huán)以不同的速率執(zhí)行任務(wù)。一個(gè)循環(huán)作為生產(chǎn)數(shù)據(jù)的循環(huán), 其他循環(huán)作為消費(fèi)數(shù)據(jù)的循環(huán)。生產(chǎn)數(shù)據(jù)的循環(huán)控制所有消費(fèi)數(shù)據(jù)的循環(huán),并且使用通信技術(shù)與它們進(jìn)行通信[4]。本文的程序設(shè)計(jì)采用了2個(gè)循環(huán),一部分是生產(chǎn)者循環(huán),主要完成緩沖區(qū)數(shù)據(jù)的判斷和讀取、將數(shù)據(jù)送入隊(duì)列,并通過(guò)循環(huán)移位寄存器將元素送到消費(fèi)者循環(huán)中,另一部分是消費(fèi)者循環(huán),將隊(duì)列中的數(shù)據(jù)取出,轉(zhuǎn)換為數(shù)組,送入MATLAB腳本進(jìn)行處理,并將最終的處理結(jié)果進(jìn)行顯示。
3.2.3 數(shù)據(jù)處理的準(zhǔn)確性
采用生產(chǎn)者與消費(fèi)者循環(huán)的最大好處是可以解決緩沖區(qū)的丟包問(wèn)題??梢允箶?shù)據(jù)按照接收的順序進(jìn)行處理,但是實(shí)時(shí)性不能保證,由于生產(chǎn)者循環(huán)和消費(fèi)者循環(huán)同時(shí)執(zhí)行,互不干涉,因此,在設(shè)計(jì)中將讀取數(shù)據(jù)和處理數(shù)據(jù)這兩件事情分開(kāi)來(lái)同時(shí)進(jìn)行,這樣便大大提高了執(zhí)行效率。對(duì)于高速率的MEMS陀螺來(lái)說(shuō),這點(diǎn)尤為重要。圖2和圖3分別為傳統(tǒng)的未采用生產(chǎn)者與消費(fèi)者循環(huán)的效果圖和采用生產(chǎn)者與消費(fèi)者循環(huán)的效果圖[5]。
由STIM202 MEMS陀螺儀傳到計(jì)算機(jī)串口中的數(shù)據(jù),一幀12個(gè)字節(jié),其中第11個(gè)字節(jié)表示采樣時(shí)刻陀螺儀的狀態(tài),當(dāng)狀態(tài)字為00時(shí),表明陀螺數(shù)據(jù)可用,因此,可以用狀態(tài)字來(lái)進(jìn)行準(zhǔn)確性判斷。在圖2、3中,第一個(gè)圖表表示解算出來(lái)的是MEMS陀螺儀的實(shí)時(shí)角速度信息,第二個(gè)圖表表示狀態(tài)字,如圖2所示,當(dāng)狀態(tài)字不正確時(shí),實(shí)時(shí)角速度的解算結(jié)果就會(huì)出現(xiàn)錯(cuò)誤。在本設(shè)計(jì)中,有兩個(gè)地方可能會(huì)造成陀螺儀數(shù)據(jù)的準(zhǔn)確性出問(wèn)題:第一個(gè)是緩沖區(qū)(見(jiàn)圖2),在高速傳輸中,當(dāng)數(shù)據(jù)的處理速度小于接收速度時(shí),緩沖區(qū)中的數(shù)據(jù)達(dá)到最大值后會(huì)產(chǎn)生溢出,造成接收數(shù)據(jù)的不連續(xù);另一個(gè)是隊(duì)列(見(jiàn)圖3所示),當(dāng)消費(fèi)者循環(huán)的處理速度低于生產(chǎn)者循環(huán)時(shí),會(huì)使隊(duì)列中的數(shù)據(jù)增多,當(dāng)計(jì)算機(jī)的內(nèi)存不夠時(shí),也會(huì)產(chǎn)生錯(cuò)誤。在高速M(fèi)EMS陀螺數(shù)據(jù)的采集中,實(shí)時(shí)性和準(zhǔn)確性往往是相伴而生的,上面兩方面的原因,就是由于實(shí)時(shí)性不好,引起了準(zhǔn)確性的問(wèn)題,這個(gè)問(wèn)題可以通過(guò)讀取隊(duì)列和緩沖區(qū)中的數(shù)據(jù)個(gè)數(shù)來(lái)進(jìn)行判斷。
如圖2所示,由于沒(méi)有采用生產(chǎn)者與消費(fèi)者循環(huán),程序?qū)τ谘h(huán)處理數(shù)據(jù)的時(shí)間遠(yuǎn)大于陀螺儀的傳輸間隔(1ms),因此緩沖區(qū)中的數(shù)據(jù)在不斷增加,而隊(duì)列中的數(shù)據(jù)基本不變,通過(guò)增大緩沖區(qū)的長(zhǎng)度,可以延緩數(shù)據(jù)溢出的時(shí)間,但是不能從根本上解決問(wèn)題,隨著時(shí)間的推移,緩沖區(qū)還是會(huì)溢出,從而出現(xiàn)錯(cuò)誤。
如圖3所示,采用了生產(chǎn)者與消費(fèi)者循環(huán),可以看到緩沖區(qū)的字節(jié)數(shù)基本不變,但是隨著時(shí)間的增長(zhǎng),隊(duì)列中的字節(jié)數(shù)在不斷增加,說(shuō)明在消費(fèi)者循環(huán)中的數(shù)據(jù)處理速度還是低于采樣間隔時(shí)間(1ms),雖然不會(huì)出現(xiàn)錯(cuò)誤,但是實(shí)時(shí)性不好,尤其是時(shí)間越長(zhǎng),陀螺狀態(tài)改變時(shí)的檢測(cè)時(shí)間就越長(zhǎng)。
由此可見(jiàn),采用生產(chǎn)者與消費(fèi)者循環(huán),可以解決緩沖區(qū)的丟包問(wèn)題,從而達(dá)到解決數(shù)據(jù)準(zhǔn)確性的目的,但是對(duì)于實(shí)時(shí)性,則無(wú)能為力。
3.2.4 數(shù)據(jù)處理的實(shí)時(shí)性
在消費(fèi)者循環(huán)的程序中,調(diào)用MATLAB腳本、圖表的顯示占用了較多的時(shí)間,其它的指令運(yùn)算的時(shí)間可以忽略不計(jì)。由于STIM202的速率是1000Hz,即每秒要在兩個(gè)圖表中顯示1000個(gè)數(shù)據(jù),這個(gè)對(duì)于LABVIEW來(lái)說(shuō)是不能實(shí)現(xiàn)的[6]。因此,從圖形的刷新頻率入手,可以有效減少處理數(shù)據(jù)的時(shí)間,解決實(shí)時(shí)性的問(wèn)題,在本程序中,將刷新頻率降低一半,便可以得到很好的效果,如圖4所示。
由圖可見(jiàn),隨著時(shí)間的增長(zhǎng),緩沖區(qū)和隊(duì)列中的數(shù)據(jù)基本不變,狀態(tài)字的顯示也正確,轉(zhuǎn)動(dòng)一下MEMS陀螺,其狀態(tài)也會(huì)馬上在實(shí)時(shí)角速度顯示圖表中顯示出來(lái),說(shuō)明其實(shí)時(shí)性良好。
4 效果分析
針對(duì)高速率MEMS陀螺的采集來(lái)說(shuō),如何提高程序運(yùn)行效率、縮短程序執(zhí)行時(shí)間是最重要的,即要同時(shí)滿足實(shí)時(shí)性和準(zhǔn)確性的要求:在準(zhǔn)確性方面,采用生產(chǎn)者與消費(fèi)者循環(huán),數(shù)據(jù)采集和數(shù)據(jù)處理同步進(jìn)行,提高了執(zhí)行效率;在實(shí)時(shí)性方面,采用了降低圖表刷新頻率的方法,減少了處理數(shù)據(jù)的時(shí)間,從而達(dá)到實(shí)時(shí)性的要求。
5 結(jié)語(yǔ)
本文針對(duì)當(dāng)前MEMS陀螺儀出現(xiàn)的數(shù)字化、高傳輸速率的新特點(diǎn),以STIM202為例,對(duì)其信息采集系統(tǒng)的設(shè)計(jì)做了介紹,采用LABVIEW+MATLAB混合編程的方式,通過(guò)采用生產(chǎn)者與消費(fèi)者循環(huán)和降低刷新頻率的方法,達(dá)到了采集中的實(shí)時(shí)性和準(zhǔn)確性的要求。本方法不僅可以適用于高速率MEMS陀螺儀的數(shù)據(jù)采集,同樣也適用于其他高速率的慣性器件的數(shù)據(jù)采集,因此,為試驗(yàn)場(chǎng)下一步的慣性器件數(shù)據(jù)采集提供了可行方法。
參考文獻(xiàn)
[1] 劉俊,石云波,李杰.微慣性技術(shù)[M].北京:電子工業(yè)出版社,2005.
[2] 王維喜,李智.基于生產(chǎn)者_(dá)消費(fèi)者設(shè)計(jì)模式的連續(xù)音頻信號(hào)采集系統(tǒng)[J].現(xiàn)代電子技術(shù),2009,(7):129-132.
[3] O.Tbata,T.Tsuchiya.RELIABILITY OF MEMS[M].南京:東南大學(xué)出版社,2009.
[4] 王禹林,熊振華,丁漢.LabVIEW與Matlab的無(wú)縫集成[J].計(jì)算機(jī)應(yīng)用,2006,(3):695-698.
[5] 魏利.實(shí)時(shí)采集數(shù)據(jù)繪圖及多種數(shù)據(jù)保存方式程序設(shè)計(jì)[J].電子測(cè)試,2008,(5):44-47.
[6] Bitter Rick, Mohiuddin Taqi, Naw rocki Matt. LabVIEW Advance Programming Techniques[M] . Boca Raton: CRC Press LLC, 2001
A Study on Data Acquisition Method of Gyro in Testing Groud
ZHANG Gao-wei1, ZHANG Wei-wei2
(1.Unit 91404 of the Chinese PLA, Qinhuangdao Hebei? 066000;
2.Unit 92785 of the Chinese PLA, Qinhuangdao Hebei? 066000)
Abstract: In this paper, the data acquisition method of STIM202 is studied, that is high-speed Micro-Electro-Mechanical gyroscope made in Norway. A new mixed programming method of LABVIEWE and MATLAB is adopted, The producer-consumer cycle is used in LABVIEW, which solves the problem of data loss in buffer in general acquisition mode under high transmission rate, The batch data operation improves the efficiency and achieves the requirements of real-time and accuracy in data acquisition. This method is also applicable to data acquisition of other gyroscopes. Therefore, it provides a practical method for data acquisition of inertial navigation equipment in the Testing Groud.
Key words: MEMS; LABVIEW; inertial device; data acquisition