董登峰,王博,李萬紅,周維虎,勞達寶
(中國科學院光電研究院,北京100094)
激光跟蹤儀是一種高精度超大尺寸空間工業測量儀器,廣泛應用于大型飛機、船舶潛艇、衛星火箭、工裝型架等大部件的裝配對接。激光跟蹤儀測量合作目標(靶球)的空間坐標位置取決于跟蹤儀基準點到靶球的距離長度及當前的方位、俯仰角度,因而角度測量是跟蹤測量的核心單元之一,而且是目前制約空間位置測量精度的主要瓶頸。
為了在激光跟蹤儀中實現精密角度測量,通常采用高精度的角位移測量傳感器圓光柵編碼器,并對編碼器輸出信號進行準確快速采集。一般而言,角度采集系統有三種方式:采用獨立元器件設計開發邏輯門電路,采用專用細分計數電路,采用現有的可編程邏輯器件或微控制器。第一種方法周期長、可靠性低;第二種方式功能單一、渠道不暢;第三種方式(如FPGA)介于前兩者之間,在保證可靠性的基礎可以方便地進行編程、出錯、再編程操作,靈活性強[1]。
在獲得可靠角度數據的基礎上進一步提高測角精度有兩個途徑[2]:①提高光柵盤的刻劃以及軸系的加工、裝配精度;②采用誤差修正技術。前者受制于加工條件和跟蹤儀的體積大小不易實現,后者主要依賴于光柵盤的檢測精度以及光柵盤本身的重復精度。所以,以高精度的測量數據為基礎,應用誤差修正技術是提高跟蹤儀測角精度的主要途徑之一。
本文針對圓光柵編碼器,介紹一種基于FPGA 的角度采集實現方法以及基于諧波分析的角度誤差修正方法。角度采集充分利用FPGA 大規模邏輯資源、高集成度、高穩定性且易編程的特點,完成對圓光柵輸出信號的濾波、倍頻辨向計數及數據傳輸功能。根據采集到的角度數據,在上位機進行諧波分析,建立誤差修正模型。在測量過程中,根據模型對實測角度進行在線修正以提高測量精度。
為減小儀器體積,激光跟蹤儀中的角度測量采用Renishaw 的精巧型高精度圓光柵。為了消除偏心等誤差,其讀數頭成對安裝。光柵盤直徑52 mm,全周刻線數8192,細分盒實現250 倍細分,輸出A,B 正交碼和Index 零位信號,角度分辨力為0.63″。A 信號超前B 信號1/4 周期,表示圓光柵正轉,B 信號超前A 信號1/4 周期表示圓光柵反轉,如圖1所示。當圓光柵經過零點時Z 信號輸出一個高電平信號。利用Z 相信號,可以矯正系統的計數數據,有效消除系統的累計誤差。圓光柵通過細分盒處理后,輸出標準的RS422 差分信號,每轉產生2048000 個方波脈沖。

圖1 圓光柵正轉、反轉輸出波形
角度脈沖數據采集系統采用自頂向下的設計思想,除時鐘管理及同步控制外,分為三大模塊[1,3]:數字濾波、辨向計數模塊及數據通信模塊。其中濾波模塊的主要功能是消除干擾脈沖對系統計數的影響,保證計數的準確性;辨向計數模塊主要完成四倍頻、正反轉辨識和計數功能;數據通信模塊主要負責將數據傳輸到FPGA 外部其他數據處理芯片,避免跨時鐘域數據傳輸帶來的各種不利影響。采集系統的結構如圖2所示。
跟蹤儀在工業現場應用存在各種不確定性因素,如跟蹤控制過程中跟蹤頭的振動、抖動和現場環境中的電磁干擾。干擾噪聲會使得圓光柵細分盒輸出的正交編碼信號在一定程度上受到干擾,輸出脈沖產生毛刺,導致脈沖計數錯誤,從而嚴重影響測量精度[4]。

圖2 角度數據采集系統結構框圖
由于經過細分盒輸出的方波脈沖為差分信號,受到電磁干擾產生的共模噪聲在一定程度上得到抑制。對于機械振動和抖動產生的噪聲,通常表現為在某一相的脈沖的邊緣地方出現毛刺的情況,如圖3所示。因此有效濾除脈沖的抖動和毛刺,是提高計數精度的關鍵步驟。
對抖動產生的毛刺信號進行觀察和分析發現,其持續時間通常極短,故頻率一般都遠高于圓光柵正常工作時所輸出的脈沖頻率,因此本文采用一種高頻數字計數濾波方法:根據系統允許的最高轉速,結合所使用圓光柵的刻線數,計算出最高轉速下圓光柵輸出的脈沖頻率,并以此頻率為臨界點,將高于這個臨界點的脈沖視為干擾脈沖濾除。即只有持續時間超過允許的最短時間的脈沖視為正常的計數脈沖。

圖3 受干擾后編碼器輸出波形
激光跟蹤儀允許的電機最大轉速為15 r/min,有效脈沖最高頻率應為500 kHz。FPGA 工作時鐘設定為50 MHz,則1/4 周期光柵脈沖信號的高或者低電平至少應持續12 個FPGA 工作時鐘。持續時間低于12 個工作時鐘的脈沖信號(超過了激光跟蹤儀允許的最大轉速)被視為干擾脈沖予以濾除。持續時間大于等于12個工作時鐘的脈沖將被送到FPGA 的辨向計數單元。此方法能有效去除高頻脈沖干擾對計數的影響,保證系統的測量精度。
激光跟蹤儀一個顯著的特點是實時精密跟蹤合作目標,因此跟蹤頭旋轉方向在不斷改變。為準確地進行跟蹤角度測量,角度采集系統必須具有快速準確的辨向計數功能。
根據Renishaw 增量式圓光柵編碼器的基本工作原理,A,B 兩相信號輸出共產生4 個跳變沿,基于A 相和B 相信號的跳變沿對圓光柵狀態進行劃分。根據狀態劃分和時序,本文采用有限狀態機對圓光柵的方波信號進行四倍頻辨向計數,另外狀態機專設一路高速同步時鐘對方波信號進行采樣和濾波處理。
有限狀態機是一種根據輸入集合及次序決定輸出集合的時序電路,是數字系統中實現高效率可靠性邏輯控制的重要方法。其可分為Moore 和Mealy 兩種類型。Mealy 狀態機的輸出是當前狀態和輸入信號的函數。即當前的圓光柵計數器既與當前編碼器所處的組合狀態有關,又與前一個狀態有關。Mealy 狀態機具有較強的實時性,用于防止輸出信號出現毛刺,增強系統的穩定性,而且比Moore 狀態機在狀態切換時提前一個同步時鐘。
將圓光柵輸出信號A,B 的高低電平分別用1,0 表示,則兩者組合共有A1B1,A1B0,A0B1,A0B0 四種穩定狀態。當圓光柵輸出狀態按A0B0→A1B0→A1B1→A0B1→A0B0 變化時,表示圓光柵正轉,狀態機計數增加;當狀態按A0B0→A0B1→A1B1→A1B0→A0B0 變化時,圓光柵反轉,狀態機計數遞減。圓光柵一旦轉動,計數模塊可以隨時在正轉和反轉狀態中自由切換。
辨向計數模塊內部自定義兩個寄存器分別存儲“當前狀態”和“新狀態”。“當前狀態”和“新狀態”值相同時,則狀態機等待且不進行任何操作。當圓光柵編碼器輸出信號A 或B 任一電平信號發生變化時,辨向計數模塊會將其存儲到“新狀態”寄存器中,并根據A,B 兩相信號相應的邏輯關系及兩個寄存器中的狀態判斷當前的狀態變化所表征的編碼器轉動方向,同時進行相應的加或減運算。接著將“新狀態”寄存器中的值賦給“當前狀態”寄存器,等待A 或B 信號的改變觸發下新一輪的操作。如此反復完成轉向辨識和脈沖計數。
由于穩定狀態是以A 相信號和B 相信號的脈沖邊沿變化進行劃分的,而A,B 一個周期內邊沿均變化兩次,所以有限狀態機在一個周期內會觸發4 次狀態判斷,完成了信號的四倍頻的功能,提高了脈沖計數的分辨力。
為了便于軟件維護及升級,程序設計中引入A0B0+,A1B0 +,A1B1 +,A0B1 + 與A0B0-,A1B0-,A1B1-,A0B1-等八個狀態,用于表示A 相信號和B相信號在某個特定的狀態下發生變化后,所引起的有限狀態機的操作。狀態機狀態的轉換流程圖如圖4所示。

圖4 辨向計數模塊狀態機狀態轉換圖
角度數據采集系統需要與跟蹤儀的跟蹤控制單元進行實時通信,以提供角度信息并進行誤差補償和進一步數據處理。為此本文利用FPGA 片內資源自定義一片雙口RAM 作為緩存。片內一部分用來存儲外部處理器發送到FPGA 的指令,另一部分用來存儲FPGA 上傳至上位機或其外部處理器的計數結果。自定義雙口RAM 能夠靈活地配置地址總線、總線數據寬度,修改與通信相關的邏輯次序和協議,方便地擴展FPGA 數據采集系統的其他功能。為便于與其他處理器進行通信,RAM 區預留一個同步時鐘信號,進行同步通訊。以避免數據傳輸過程中由亞穩態造成的錯誤。自定義雙口RAM 的數據流向如圖5所示。

圖5 自定義雙口RAM 數據流向
在通信過程中,把自定義的雙口RAM 劃分為命令、數據兩個部分,命令部分為外部處理器數據流向FPGA;數據部分為FPGA 計數邏輯模塊向雙口RAM 的數據部分寫入數據;在同步時鐘的下降沿“片選”以及“讀”信號有效后,觸發FPGA 數據流向外部處理器。利用預留的同步時鐘來控制數據的傳輸:在同步時鐘上升沿“片選”信號以及“寫”信號有效后,觸發FPGA 內部邏輯電路,內部的邏輯模塊和外部處理器分別讀取雙口RAM 中的數據。利用同步時鐘控制數據的讀寫,能夠防止外部處理器和內部邏輯模塊同時對雙口RAM 的同一個存儲單元進行操作所產生的數據沖突。而且由于同步時鐘的控制,FPGA 傳輸的數據僅延遲了一個同步時鐘周期,較好地保證了激光跟蹤儀控制系統的實時性。在此基礎上,如果想進一步提高實時性可以根據實際的通訊速度和頻率,適當調整同步時鐘的周期。
基于前述設計思路,本文以Xilinx 公司Spartan-3E系列的FPGA XC3S500E 作為驗證平臺。在ISE 軟件環境下,基于Verilog HDL 語言開發各個功能模塊,利用Modelsim 進行仿真。結果如圖6 和圖7所示。

圖6 濾波模塊仿真波形圖

圖7 辨向計數模塊仿真結果圖
圖6 中clk 為系統工作時鐘,in_a 與in_b 為數字濾波模塊的輸入,out_sample 為clk 二倍頻后得到的采樣時鐘,out_a 與out_b 為模塊輸出。由圖6 可以看到系統輸入in_a 和in_b 經過濾波模塊處理后,高頻干擾脈沖被有效濾除,數字濾波模塊輸出波形out_a及out_b 符合正確計數的要求。
由圖7,輸入信號a,b 電平的改變會引起計數模塊中狀態寄存器“新狀態”nstate_reg 和“當前狀態”state_reg 狀態值的改變,計數模塊根據有限狀態機辨識出圓光柵為正轉或反轉并進行+1 或-1 操作。由仿真結果可以看出當圓光柵編碼器從正轉切換到反轉,并且反向轉動速度為正向轉速的2 倍時(信號A 和信號B 的頻率增加了一倍),計數模塊可以正確辨向并計數。
在仿真驗證的基礎上,以8 面棱體與自準直儀相結合開展實驗進行角度驗證。實測8 組角度數據及其相應的測量偏差如表1所示。
Renishaw 圓光柵的技術手冊標明光柵測量誤差為4.28″,實驗測得的角度誤差小于3.5″,表明角度采集處理結果準確無誤,能夠滿足激光跟蹤儀的角度測量要求。
激光跟蹤儀測角誤差主要來源于光柵盤的機械安裝誤差、柱面刻劃誤差以及細分盒的細分誤差等周期性誤差[5-6]。機械安裝誤差包括偏心、傾斜、軸系晃動等;刻劃誤差指刻線實際位置與理想位置的偏差;細分誤差指細分信號的非嚴格正交誤差、幅度不等誤差和電壓信號的漂移誤差。前兩者以一轉為一個基周期,屬于中低頻誤差;后者以一個柵距為一個基周期,屬于高頻誤差。但兩者都具有周期性,因而可以采用諧波分析法對誤差數據進行處理以提高測量精度,即在基周期內取N 等分測量點,將離散實驗數據近似表示為傅里葉級數,通過數據擬合計算得到各階諧波系數。當等分數N 為偶數時,只能計算到m=N /2 階系數;N 為奇數時,只能計算到m=(N- 1)/2 階系數[6-7]。

表1 實驗測試結果
一般地,對于0 ~m 階誤差諧波函數,可以表示為

式中:m 為測角誤差諧波的最高階數,Ck為第k 階誤差諧波系數,φk為第k 階諧波誤差的初相角。
實驗測得的誤差以Δθ 表示,則可以采用非線性最小二乘法求解下式[8],即

得到滿足e 為最小值時的諧波系數Ck,φk。由于采用的是8 面棱體,所以m=4,根據表1 及式(2),得到計算結果如表2所示。

表2 誤差諧波函數參量計算結果
由表2,諧波函數的一、二、三階系數較大,權重較高,所以采用一、二、三階諧波函數對測量誤差進行修正。重新開展一次實驗,實測誤差及修正后的結果如表3所示。

表3 誤差修正前后的結果對比
實驗數據表明,測量誤差由3.5″減小到1.5″以內,這說明誤差諧波分析方法能夠顯著提高圓光柵測角系統的精度。
本文以FPGA 為平臺,詳細介紹了激光跟蹤儀角度數據采集系統的設計和實現方法,仿真及實驗結果表明該系統能夠有效濾除干擾脈沖,準確無誤地進行辨向計數及數據通信。在分析了圓光柵測角誤差產生機理的基礎上,采用誤差諧波分析方法對實驗結果進行誤差修正,使系統測量誤差由3.5″減小到1.5″以內。本文設計的角度采集系統具有靈活性和易于擴展的特點,所采用的諧波分析方法具有一定的通用性,可以綜合推廣應用到其他相關領域。
[1]王博,郭陽寬,周維虎,等.基于FPGA 的圓光柵編碼器數據采集系統設計[J].微型機與應用,2012,31(23):28-31.
[2]費斌,徐文雄,蔣莊德,等.計量圓光柵動態精度的檢測技術[J].儀器儀表學報,1996,17(5):525-529.
[3]王鵬,杜衛東,呂志剛,等.基于FPGA 與FSM 的高精度測角系統設計與實現[J].測控技術與儀器儀表,2012,38(2):77-79,83.
[4]蘇東風,續志軍,賈繼強,等.提高圓光柵測角系統精度的讀數頭設計[J].電子測量與儀器學報,2013,27(7):653-657.
[5]高貫斌.圓光柵角度傳感器的誤差補償及參數辨識[J].光學精密工程,2010,18(8):1766-1762.
[6]趙人杰,馬文禮.利用誤差諧波補償法提高金屬圓光柵測角精度[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]張禮松,管炳良.關節坐標測量機研制中圓光柵誤差修正技術[J].計測技術,2007,27(4):41-43.