董登峰,王博,李萬紅,周維虎,勞達(dá)寶
(中國科學(xué)院光電研究院,北京100094)
激光跟蹤儀是一種高精度超大尺寸空間工業(yè)測量儀器,廣泛應(yīng)用于大型飛機(jī)、船舶潛艇、衛(wèi)星火箭、工裝型架等大部件的裝配對接。激光跟蹤儀測量合作目標(biāo)(靶球)的空間坐標(biāo)位置取決于跟蹤儀基準(zhǔn)點(diǎn)到靶球的距離長度及當(dāng)前的方位、俯仰角度,因而角度測量是跟蹤測量的核心單元之一,而且是目前制約空間位置測量精度的主要瓶頸。
為了在激光跟蹤儀中實(shí)現(xiàn)精密角度測量,通常采用高精度的角位移測量傳感器圓光柵編碼器,并對編碼器輸出信號進(jìn)行準(zhǔn)確快速采集。一般而言,角度采集系統(tǒng)有三種方式:采用獨(dú)立元器件設(shè)計(jì)開發(fā)邏輯門電路,采用專用細(xì)分計(jì)數(shù)電路,采用現(xiàn)有的可編程邏輯器件或微控制器。第一種方法周期長、可靠性低;第二種方式功能單一、渠道不暢;第三種方式(如FPGA)介于前兩者之間,在保證可靠性的基礎(chǔ)可以方便地進(jìn)行編程、出錯(cuò)、再編程操作,靈活性強(qiáng)[1]。
在獲得可靠角度數(shù)據(jù)的基礎(chǔ)上進(jìn)一步提高測角精度有兩個(gè)途徑[2]:①提高光柵盤的刻劃以及軸系的加工、裝配精度;②采用誤差修正技術(shù)。前者受制于加工條件和跟蹤儀的體積大小不易實(shí)現(xiàn),后者主要依賴于光柵盤的檢測精度以及光柵盤本身的重復(fù)精度。所以,以高精度的測量數(shù)據(jù)為基礎(chǔ),應(yīng)用誤差修正技術(shù)是提高跟蹤儀測角精度的主要途徑之一。
本文針對圓光柵編碼器,介紹一種基于FPGA 的角度采集實(shí)現(xiàn)方法以及基于諧波分析的角度誤差修正方法。角度采集充分利用FPGA 大規(guī)模邏輯資源、高集成度、高穩(wěn)定性且易編程的特點(diǎn),完成對圓光柵輸出信號的濾波、倍頻辨向計(jì)數(shù)及數(shù)據(jù)傳輸功能。根據(jù)采集到的角度數(shù)據(jù),在上位機(jī)進(jìn)行諧波分析,建立誤差修正模型。在測量過程中,根據(jù)模型對實(shí)測角度進(jìn)行在線修正以提高測量精度。
為減小儀器體積,激光跟蹤儀中的角度測量采用Renishaw 的精巧型高精度圓光柵。為了消除偏心等誤差,其讀數(shù)頭成對安裝。光柵盤直徑52 mm,全周刻線數(shù)8192,細(xì)分盒實(shí)現(xiàn)250 倍細(xì)分,輸出A,B 正交碼和Index 零位信號,角度分辨力為0.63″。A 信號超前B 信號1/4 周期,表示圓光柵正轉(zhuǎn),B 信號超前A 信號1/4 周期表示圓光柵反轉(zhuǎn),如圖1所示。當(dāng)圓光柵經(jīng)過零點(diǎn)時(shí)Z 信號輸出一個(gè)高電平信號。利用Z 相信號,可以矯正系統(tǒng)的計(jì)數(shù)數(shù)據(jù),有效消除系統(tǒng)的累計(jì)誤差。圓光柵通過細(xì)分盒處理后,輸出標(biāo)準(zhǔn)的RS422 差分信號,每轉(zhuǎn)產(chǎn)生2048000 個(gè)方波脈沖。
圖1 圓光柵正轉(zhuǎn)、反轉(zhuǎn)輸出波形
角度脈沖數(shù)據(jù)采集系統(tǒng)采用自頂向下的設(shè)計(jì)思想,除時(shí)鐘管理及同步控制外,分為三大模塊[1,3]:數(shù)字濾波、辨向計(jì)數(shù)模塊及數(shù)據(jù)通信模塊。其中濾波模塊的主要功能是消除干擾脈沖對系統(tǒng)計(jì)數(shù)的影響,保證計(jì)數(shù)的準(zhǔn)確性;辨向計(jì)數(shù)模塊主要完成四倍頻、正反轉(zhuǎn)辨識和計(jì)數(shù)功能;數(shù)據(jù)通信模塊主要負(fù)責(zé)將數(shù)據(jù)傳輸?shù)紽PGA 外部其他數(shù)據(jù)處理芯片,避免跨時(shí)鐘域數(shù)據(jù)傳輸帶來的各種不利影響。采集系統(tǒng)的結(jié)構(gòu)如圖2所示。
跟蹤儀在工業(yè)現(xiàn)場應(yīng)用存在各種不確定性因素,如跟蹤控制過程中跟蹤頭的振動、抖動和現(xiàn)場環(huán)境中的電磁干擾。干擾噪聲會使得圓光柵細(xì)分盒輸出的正交編碼信號在一定程度上受到干擾,輸出脈沖產(chǎn)生毛刺,導(dǎo)致脈沖計(jì)數(shù)錯(cuò)誤,從而嚴(yán)重影響測量精度[4]。
圖2 角度數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)框圖
由于經(jīng)過細(xì)分盒輸出的方波脈沖為差分信號,受到電磁干擾產(chǎn)生的共模噪聲在一定程度上得到抑制。對于機(jī)械振動和抖動產(chǎn)生的噪聲,通常表現(xiàn)為在某一相的脈沖的邊緣地方出現(xiàn)毛刺的情況,如圖3所示。因此有效濾除脈沖的抖動和毛刺,是提高計(jì)數(shù)精度的關(guān)鍵步驟。
對抖動產(chǎn)生的毛刺信號進(jìn)行觀察和分析發(fā)現(xiàn),其持續(xù)時(shí)間通常極短,故頻率一般都遠(yuǎn)高于圓光柵正常工作時(shí)所輸出的脈沖頻率,因此本文采用一種高頻數(shù)字計(jì)數(shù)濾波方法:根據(jù)系統(tǒng)允許的最高轉(zhuǎn)速,結(jié)合所使用圓光柵的刻線數(shù),計(jì)算出最高轉(zhuǎn)速下圓光柵輸出的脈沖頻率,并以此頻率為臨界點(diǎn),將高于這個(gè)臨界點(diǎn)的脈沖視為干擾脈沖濾除。即只有持續(xù)時(shí)間超過允許的最短時(shí)間的脈沖視為正常的計(jì)數(shù)脈沖。
圖3 受干擾后編碼器輸出波形
激光跟蹤儀允許的電機(jī)最大轉(zhuǎn)速為15 r/min,有效脈沖最高頻率應(yīng)為500 kHz。FPGA 工作時(shí)鐘設(shè)定為50 MHz,則1/4 周期光柵脈沖信號的高或者低電平至少應(yīng)持續(xù)12 個(gè)FPGA 工作時(shí)鐘。持續(xù)時(shí)間低于12 個(gè)工作時(shí)鐘的脈沖信號(超過了激光跟蹤儀允許的最大轉(zhuǎn)速)被視為干擾脈沖予以濾除。持續(xù)時(shí)間大于等于12個(gè)工作時(shí)鐘的脈沖將被送到FPGA 的辨向計(jì)數(shù)單元。此方法能有效去除高頻脈沖干擾對計(jì)數(shù)的影響,保證系統(tǒng)的測量精度。
激光跟蹤儀一個(gè)顯著的特點(diǎn)是實(shí)時(shí)精密跟蹤合作目標(biāo),因此跟蹤頭旋轉(zhuǎn)方向在不斷改變。為準(zhǔn)確地進(jìn)行跟蹤角度測量,角度采集系統(tǒng)必須具有快速準(zhǔn)確的辨向計(jì)數(shù)功能。
根據(jù)Renishaw 增量式圓光柵編碼器的基本工作原理,A,B 兩相信號輸出共產(chǎn)生4 個(gè)跳變沿,基于A 相和B 相信號的跳變沿對圓光柵狀態(tài)進(jìn)行劃分。根據(jù)狀態(tài)劃分和時(shí)序,本文采用有限狀態(tài)機(jī)對圓光柵的方波信號進(jìn)行四倍頻辨向計(jì)數(shù),另外狀態(tài)機(jī)專設(shè)一路高速同步時(shí)鐘對方波信號進(jìn)行采樣和濾波處理。
有限狀態(tài)機(jī)是一種根據(jù)輸入集合及次序決定輸出集合的時(shí)序電路,是數(shù)字系統(tǒng)中實(shí)現(xiàn)高效率可靠性邏輯控制的重要方法。其可分為Moore 和Mealy 兩種類型。Mealy 狀態(tài)機(jī)的輸出是當(dāng)前狀態(tài)和輸入信號的函數(shù)。即當(dāng)前的圓光柵計(jì)數(shù)器既與當(dāng)前編碼器所處的組合狀態(tài)有關(guān),又與前一個(gè)狀態(tài)有關(guān)。Mealy 狀態(tài)機(jī)具有較強(qiáng)的實(shí)時(shí)性,用于防止輸出信號出現(xiàn)毛刺,增強(qiáng)系統(tǒng)的穩(wěn)定性,而且比Moore 狀態(tài)機(jī)在狀態(tài)切換時(shí)提前一個(gè)同步時(shí)鐘。
將圓光柵輸出信號A,B 的高低電平分別用1,0 表示,則兩者組合共有A1B1,A1B0,A0B1,A0B0 四種穩(wěn)定狀態(tài)。當(dāng)圓光柵輸出狀態(tài)按A0B0→A1B0→A1B1→A0B1→A0B0 變化時(shí),表示圓光柵正轉(zhuǎn),狀態(tài)機(jī)計(jì)數(shù)增加;當(dāng)狀態(tài)按A0B0→A0B1→A1B1→A1B0→A0B0 變化時(shí),圓光柵反轉(zhuǎn),狀態(tài)機(jī)計(jì)數(shù)遞減。圓光柵一旦轉(zhuǎn)動,計(jì)數(shù)模塊可以隨時(shí)在正轉(zhuǎn)和反轉(zhuǎn)狀態(tài)中自由切換。
辨向計(jì)數(shù)模塊內(nèi)部自定義兩個(gè)寄存器分別存儲“當(dāng)前狀態(tài)”和“新狀態(tài)”?!爱?dāng)前狀態(tài)”和“新狀態(tài)”值相同時(shí),則狀態(tài)機(jī)等待且不進(jìn)行任何操作。當(dāng)圓光柵編碼器輸出信號A 或B 任一電平信號發(fā)生變化時(shí),辨向計(jì)數(shù)模塊會將其存儲到“新狀態(tài)”寄存器中,并根據(jù)A,B 兩相信號相應(yīng)的邏輯關(guān)系及兩個(gè)寄存器中的狀態(tài)判斷當(dāng)前的狀態(tài)變化所表征的編碼器轉(zhuǎn)動方向,同時(shí)進(jìn)行相應(yīng)的加或減運(yùn)算。接著將“新狀態(tài)”寄存器中的值賦給“當(dāng)前狀態(tài)”寄存器,等待A 或B 信號的改變觸發(fā)下新一輪的操作。如此反復(fù)完成轉(zhuǎn)向辨識和脈沖計(jì)數(shù)。
由于穩(wěn)定狀態(tài)是以A 相信號和B 相信號的脈沖邊沿變化進(jìn)行劃分的,而A,B 一個(gè)周期內(nèi)邊沿均變化兩次,所以有限狀態(tài)機(jī)在一個(gè)周期內(nèi)會觸發(fā)4 次狀態(tài)判斷,完成了信號的四倍頻的功能,提高了脈沖計(jì)數(shù)的分辨力。
為了便于軟件維護(hù)及升級,程序設(shè)計(jì)中引入A0B0+,A1B0 +,A1B1 +,A0B1 + 與A0B0-,A1B0-,A1B1-,A0B1-等八個(gè)狀態(tài),用于表示A 相信號和B相信號在某個(gè)特定的狀態(tài)下發(fā)生變化后,所引起的有限狀態(tài)機(jī)的操作。狀態(tài)機(jī)狀態(tài)的轉(zhuǎn)換流程圖如圖4所示。
圖4 辨向計(jì)數(shù)模塊狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換圖
角度數(shù)據(jù)采集系統(tǒng)需要與跟蹤儀的跟蹤控制單元進(jìn)行實(shí)時(shí)通信,以提供角度信息并進(jìn)行誤差補(bǔ)償和進(jìn)一步數(shù)據(jù)處理。為此本文利用FPGA 片內(nèi)資源自定義一片雙口RAM 作為緩存。片內(nèi)一部分用來存儲外部處理器發(fā)送到FPGA 的指令,另一部分用來存儲FPGA 上傳至上位機(jī)或其外部處理器的計(jì)數(shù)結(jié)果。自定義雙口RAM 能夠靈活地配置地址總線、總線數(shù)據(jù)寬度,修改與通信相關(guān)的邏輯次序和協(xié)議,方便地?cái)U(kuò)展FPGA 數(shù)據(jù)采集系統(tǒng)的其他功能。為便于與其他處理器進(jìn)行通信,RAM 區(qū)預(yù)留一個(gè)同步時(shí)鐘信號,進(jìn)行同步通訊。以避免數(shù)據(jù)傳輸過程中由亞穩(wěn)態(tài)造成的錯(cuò)誤。自定義雙口RAM 的數(shù)據(jù)流向如圖5所示。
圖5 自定義雙口RAM 數(shù)據(jù)流向
在通信過程中,把自定義的雙口RAM 劃分為命令、數(shù)據(jù)兩個(gè)部分,命令部分為外部處理器數(shù)據(jù)流向FPGA;數(shù)據(jù)部分為FPGA 計(jì)數(shù)邏輯模塊向雙口RAM 的數(shù)據(jù)部分寫入數(shù)據(jù);在同步時(shí)鐘的下降沿“片選”以及“讀”信號有效后,觸發(fā)FPGA 數(shù)據(jù)流向外部處理器。利用預(yù)留的同步時(shí)鐘來控制數(shù)據(jù)的傳輸:在同步時(shí)鐘上升沿“片選”信號以及“寫”信號有效后,觸發(fā)FPGA 內(nèi)部邏輯電路,內(nèi)部的邏輯模塊和外部處理器分別讀取雙口RAM 中的數(shù)據(jù)。利用同步時(shí)鐘控制數(shù)據(jù)的讀寫,能夠防止外部處理器和內(nèi)部邏輯模塊同時(shí)對雙口RAM 的同一個(gè)存儲單元進(jìn)行操作所產(chǎn)生的數(shù)據(jù)沖突。而且由于同步時(shí)鐘的控制,F(xiàn)PGA 傳輸?shù)臄?shù)據(jù)僅延遲了一個(gè)同步時(shí)鐘周期,較好地保證了激光跟蹤儀控制系統(tǒng)的實(shí)時(shí)性。在此基礎(chǔ)上,如果想進(jìn)一步提高實(shí)時(shí)性可以根據(jù)實(shí)際的通訊速度和頻率,適當(dāng)調(diào)整同步時(shí)鐘的周期。
基于前述設(shè)計(jì)思路,本文以Xilinx 公司Spartan-3E系列的FPGA XC3S500E 作為驗(yàn)證平臺。在ISE 軟件環(huán)境下,基于Verilog HDL 語言開發(fā)各個(gè)功能模塊,利用Modelsim 進(jìn)行仿真。結(jié)果如圖6 和圖7所示。
圖6 濾波模塊仿真波形圖
圖7 辨向計(jì)數(shù)模塊仿真結(jié)果圖
圖6 中clk 為系統(tǒng)工作時(shí)鐘,in_a 與in_b 為數(shù)字濾波模塊的輸入,out_sample 為clk 二倍頻后得到的采樣時(shí)鐘,out_a 與out_b 為模塊輸出。由圖6 可以看到系統(tǒng)輸入in_a 和in_b 經(jīng)過濾波模塊處理后,高頻干擾脈沖被有效濾除,數(shù)字濾波模塊輸出波形out_a及out_b 符合正確計(jì)數(shù)的要求。
由圖7,輸入信號a,b 電平的改變會引起計(jì)數(shù)模塊中狀態(tài)寄存器“新狀態(tài)”nstate_reg 和“當(dāng)前狀態(tài)”state_reg 狀態(tài)值的改變,計(jì)數(shù)模塊根據(jù)有限狀態(tài)機(jī)辨識出圓光柵為正轉(zhuǎn)或反轉(zhuǎn)并進(jìn)行+1 或-1 操作。由仿真結(jié)果可以看出當(dāng)圓光柵編碼器從正轉(zhuǎn)切換到反轉(zhuǎn),并且反向轉(zhuǎn)動速度為正向轉(zhuǎn)速的2 倍時(shí)(信號A 和信號B 的頻率增加了一倍),計(jì)數(shù)模塊可以正確辨向并計(jì)數(shù)。
在仿真驗(yàn)證的基礎(chǔ)上,以8 面棱體與自準(zhǔn)直儀相結(jié)合開展實(shí)驗(yàn)進(jìn)行角度驗(yàn)證。實(shí)測8 組角度數(shù)據(jù)及其相應(yīng)的測量偏差如表1所示。
Renishaw 圓光柵的技術(shù)手冊標(biāo)明光柵測量誤差為4.28″,實(shí)驗(yàn)測得的角度誤差小于3.5″,表明角度采集處理結(jié)果準(zhǔn)確無誤,能夠滿足激光跟蹤儀的角度測量要求。
激光跟蹤儀測角誤差主要來源于光柵盤的機(jī)械安裝誤差、柱面刻劃誤差以及細(xì)分盒的細(xì)分誤差等周期性誤差[5-6]。機(jī)械安裝誤差包括偏心、傾斜、軸系晃動等;刻劃誤差指刻線實(shí)際位置與理想位置的偏差;細(xì)分誤差指細(xì)分信號的非嚴(yán)格正交誤差、幅度不等誤差和電壓信號的漂移誤差。前兩者以一轉(zhuǎn)為一個(gè)基周期,屬于中低頻誤差;后者以一個(gè)柵距為一個(gè)基周期,屬于高頻誤差。但兩者都具有周期性,因而可以采用諧波分析法對誤差數(shù)據(jù)進(jìn)行處理以提高測量精度,即在基周期內(nèi)取N 等分測量點(diǎn),將離散實(shí)驗(yàn)數(shù)據(jù)近似表示為傅里葉級數(shù),通過數(shù)據(jù)擬合計(jì)算得到各階諧波系數(shù)。當(dāng)?shù)确謹(jǐn)?shù)N 為偶數(shù)時(shí),只能計(jì)算到m=N /2 階系數(shù);N 為奇數(shù)時(shí),只能計(jì)算到m=(N- 1)/2 階系數(shù)[6-7]。
表1 實(shí)驗(yàn)測試結(jié)果
一般地,對于0 ~m 階誤差諧波函數(shù),可以表示為
式中:m 為測角誤差諧波的最高階數(shù),Ck為第k 階誤差諧波系數(shù),φk為第k 階諧波誤差的初相角。
實(shí)驗(yàn)測得的誤差以Δθ 表示,則可以采用非線性最小二乘法求解下式[8],即
得到滿足e 為最小值時(shí)的諧波系數(shù)Ck,φk。由于采用的是8 面棱體,所以m=4,根據(jù)表1 及式(2),得到計(jì)算結(jié)果如表2所示。
表2 誤差諧波函數(shù)參量計(jì)算結(jié)果
由表2,諧波函數(shù)的一、二、三階系數(shù)較大,權(quán)重較高,所以采用一、二、三階諧波函數(shù)對測量誤差進(jìn)行修正。重新開展一次實(shí)驗(yàn),實(shí)測誤差及修正后的結(jié)果如表3所示。
表3 誤差修正前后的結(jié)果對比
實(shí)驗(yàn)數(shù)據(jù)表明,測量誤差由3.5″減小到1.5″以內(nèi),這說明誤差諧波分析方法能夠顯著提高圓光柵測角系統(tǒng)的精度。
本文以FPGA 為平臺,詳細(xì)介紹了激光跟蹤儀角度數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方法,仿真及實(shí)驗(yàn)結(jié)果表明該系統(tǒng)能夠有效濾除干擾脈沖,準(zhǔn)確無誤地進(jìn)行辨向計(jì)數(shù)及數(shù)據(jù)通信。在分析了圓光柵測角誤差產(chǎn)生機(jī)理的基礎(chǔ)上,采用誤差諧波分析方法對實(shí)驗(yàn)結(jié)果進(jìn)行誤差修正,使系統(tǒng)測量誤差由3.5″減小到1.5″以內(nèi)。本文設(shè)計(jì)的角度采集系統(tǒng)具有靈活性和易于擴(kuò)展的特點(diǎn),所采用的諧波分析方法具有一定的通用性,可以綜合推廣應(yīng)用到其他相關(guān)領(lǐng)域。
[1]王博,郭陽寬,周維虎,等.基于FPGA 的圓光柵編碼器數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2012,31(23):28-31.
[2]費(fèi)斌,徐文雄,蔣莊德,等.計(jì)量圓光柵動態(tài)精度的檢測技術(shù)[J].儀器儀表學(xué)報(bào),1996,17(5):525-529.
[3]王鵬,杜衛(wèi)東,呂志剛,等.基于FPGA 與FSM 的高精度測角系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].測控技術(shù)與儀器儀表,2012,38(2):77-79,83.
[4]蘇東風(fēng),續(xù)志軍,賈繼強(qiáng),等.提高圓光柵測角系統(tǒng)精度的讀數(shù)頭設(shè)計(jì)[J].電子測量與儀器學(xué)報(bào),2013,27(7):653-657.
[5]高貫斌.圓光柵角度傳感器的誤差補(bǔ)償及參數(shù)辨識[J].光學(xué)精密工程,2010,18(8):1766-1762.
[6]趙人杰,馬文禮.利用誤差諧波補(bǔ)償法提高金屬圓光柵測角精度[J].儀器儀表用戶.2009,116(3):69-71.
[7]Kaul S K,Tickoo A K,Koul R,et al,Improving the accuracy of low-cost resolver-based encoders using harmonicanalysis[J].Nuclear Instruments and Methodsin Physics Research,2008,586(A):345-355.
[8]張禮松,管炳良.關(guān)節(jié)坐標(biāo)測量機(jī)研制中圓光柵誤差修正技術(shù)[J].計(jì)測技術(shù),2007,27(4):41-43.