孫嘉霖,李艷輝,霍 琦,李 昂
(中國科學(xué)院長春光學(xué)精密機(jī)械與物理研究所,長春 130033)
在大口徑空間光學(xué)望遠(yuǎn)鏡中,由于加工中存在誤差,環(huán)境因素導(dǎo)致的材料形變,都會對望遠(yuǎn)鏡的成像效果產(chǎn)生影響,無法達(dá)到預(yù)期的成像要求[1]。因此,為了滿足高精度望遠(yuǎn)鏡位姿調(diào)整的六維并聯(lián)機(jī)構(gòu)就應(yīng)運(yùn)而生,而位姿的調(diào)整需要接收6組編碼器數(shù)值。
傳統(tǒng)的系統(tǒng)設(shè)計(jì)將現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)與編碼器端直接連接,通過BISS-C協(xié)議能夠正確地接受單個編碼器的數(shù)據(jù)來進(jìn)行電機(jī)控制[2]。但在實(shí)際的運(yùn)動控制的應(yīng)用條件下,單個編碼器的數(shù)據(jù)不足以反映整個運(yùn)動控制系統(tǒng)的運(yùn)動狀態(tài)。因此,需要并行采集多個編碼器的數(shù)據(jù)來滿足對精密機(jī)械的控制[3]。而對于多路編碼器的數(shù)據(jù)采集,趙洪深等[4]采用FPGA和多路選擇器進(jìn)行組合來進(jìn)行數(shù)據(jù)采集的,但由于多路選擇器的使用,喪失了編碼器數(shù)據(jù)接收的實(shí)時(shí)性,無法滿足電機(jī)控制過程中編碼器數(shù)據(jù)實(shí)時(shí)性的要求。張立等[5]使用FPGA對多路數(shù)據(jù)進(jìn)行并行采集,并用單片機(jī)進(jìn)行數(shù)據(jù)處理和傳輸?shù)?,但針對于六足平臺的控制來講,F(xiàn)PGA編程的靈活性更強(qiáng),更適合用來進(jìn)行運(yùn)動控制程序的設(shè)計(jì)開發(fā)及驗(yàn)證。而如果只用一片F(xiàn)PGA芯片進(jìn)行多組編碼器數(shù)據(jù)的并行處理,不僅占用了大量IO端口,增加了主控FPGA的運(yùn)算量,而且由于時(shí)序信號(MA)與數(shù)據(jù)信號(SLO)差分處理,控制端與六維并聯(lián)機(jī)構(gòu)間連接線纜數(shù)量為24根,線纜數(shù)量較多,給整個運(yùn)動控制系統(tǒng)增加了負(fù)擔(dān)[6]。
基于上述原因,本文設(shè)計(jì)的系統(tǒng)由2片F(xiàn)PGA來進(jìn)行實(shí)現(xiàn),編碼器端FPGA負(fù)責(zé)六維并聯(lián)機(jī)構(gòu)支腿上的編碼器數(shù)據(jù)采集,將采集到的6組編碼器數(shù)據(jù)整合后,等待控制端的時(shí)序信號MA來到時(shí),將實(shí)時(shí)更新整合的編碼器數(shù)據(jù)發(fā)送到控制端FPGA處。如此設(shè)計(jì)該系統(tǒng)后,軟件方面上減少了六維并聯(lián)機(jī)構(gòu)運(yùn)動控制端FPGA的運(yùn)算處理量,使得運(yùn)動控制單元能夠提供更多的運(yùn)算處理單元,提供給控制算法,留給控制算法更大的空間來進(jìn)行優(yōu)化處理運(yùn)動過程中的問題。硬件方面上,減少了控制端與六維并聯(lián)平臺間連接線數(shù)量,由原來的24根線纜減少為4根,同時(shí)也減少了占用的控制端FPGA的端口。最后通過實(shí)物驗(yàn)證實(shí)驗(yàn),驗(yàn)證了編碼器端FPGA能夠正確接收6組編碼器數(shù)據(jù),并進(jìn)行校驗(yàn),控制端FPGA能夠接收并解算出6組編碼器數(shù)據(jù),數(shù)據(jù)傳輸過程穩(wěn)定可靠。
圖1 FPGA硬件電路原理Figure1 FPGA hardwarecircuit schematic diagram
該數(shù)據(jù)傳送系統(tǒng)的硬件分為編碼器端FPGA和控制端FPGA兩部分組成。
首先介紹編碼器端FPGA硬件電路的設(shè)計(jì),硬件原理如圖1所示,以其中一個編碼器數(shù)據(jù)接收為例,編碼器數(shù)據(jù)直接接收端接收編碼器發(fā)出的時(shí)序MA的差分信號(MA1+和MA1-)并接收數(shù)據(jù)SLO差分信號(SLO1+和SLO1-),4條信號線通過MAX490EAS將差分信號SLO與MA轉(zhuǎn)化為單端信號DATA1與CLK1。該單端信號通過具有三態(tài)輸出的3.3 V-ABT-16位總線收發(fā)器SN74LVTH162245DL,將單端信號DATA1與CLK1轉(zhuǎn)化為可直接連接芯片引腳的DATA1_C與CLK1_C,來進(jìn)行編碼器數(shù)據(jù)的收發(fā),該部分芯片采用的是Altera公司的EP4CE10E22C8N。
編碼器數(shù)據(jù)間接接收端為進(jìn)行試驗(yàn)驗(yàn)證,采用的是SPARTAN-6系列的開發(fā)板替代了六足平臺的控制電箱,F(xiàn)PGA芯片型號為XC6SLX45。
CRC檢驗(yàn)的基本原理就是通過在正常的二進(jìn)制k位數(shù)據(jù)后面,通過固定的運(yùn)算關(guān)系,生成一個r位的校驗(yàn)位,構(gòu)成一個n=k+r位的數(shù)據(jù),通過在接收端檢測接收到的數(shù)據(jù)關(guān)系,來判斷在傳輸數(shù)據(jù)的過程中,是否發(fā)生錯誤[7]。CRC校驗(yàn)的基本原理可以用下式來表明:式 中: M=xTu(x),u(x)=un-l-1xn-l-1+…+u1x+u0;r=n-k;R=vr-1xr-1+…+v1x+v0;g(x)=gn-kxn-k+gn-k-1xn-k-1+…+g1x+g0。
M(Message)為傳輸信息部分的多項(xiàng)式,R(Remainder)為校驗(yàn)部分的多項(xiàng)式,r為檢驗(yàn)部分的位數(shù),k為信息字段的位數(shù),G為約定生成的多項(xiàng)式。對于發(fā)送端來說,通過需要傳輸?shù)男畔和確定的G,可以生成對應(yīng)信息M的一個校驗(yàn)字段R。將R附加在M后面構(gòu)成新的多項(xiàng)式V=Mxr+R,將新的多項(xiàng)式V發(fā)送到接收端。對于接收端來說,將接收到的V與G用模二除法進(jìn)行運(yùn)算,余數(shù)為0,則表示傳輸信息正確。
編碼器數(shù)據(jù)采集系統(tǒng)軟件流程如圖2所示。
圖2 編碼器數(shù)據(jù)采集系統(tǒng)軟件流程Figure2 Flow chart of system software of encoder data acquisition system
首先,編碼器端FPGA接收6組編碼器,并進(jìn)行CRC校驗(yàn),校驗(yàn)成功后,編碼器端FPGA對6組編碼器數(shù)據(jù)進(jìn)行整合,6只光電編碼器軟件處理后得到各自18位數(shù)據(jù),其中,前15位為有效二進(jìn)制數(shù)位(高位在前,低位在后),后3位為該編碼器當(dāng)前時(shí)刻狀態(tài)值(可以用此值判斷當(dāng)前編碼器狀態(tài)是否異常)。這樣,每一數(shù)據(jù)包包含6只光電編碼器108位數(shù)據(jù),編碼器端FPGA將從108位數(shù)據(jù)最高位起,每6位為一段,通過這個樣的方式獲取18段6位數(shù)據(jù),將18段數(shù)據(jù)累加求和,最后以累加和的6位數(shù)據(jù)作為求和校驗(yàn)位,高位在前,低位在后。當(dāng)接收到控制端FPGA發(fā)送的時(shí)序MA信號時(shí),送出這108位數(shù)據(jù)和6位的求和校驗(yàn)位。
編碼器端的FPGA與編碼器間的通信是采用Biss C模式的通信協(xié)議對6只編碼器的數(shù)據(jù)進(jìn)行采集。6只編碼器的MA發(fā)送及SLO接收都是由一片F(xiàn)PGA進(jìn)行控制,接收到編碼器數(shù)據(jù)后,對數(shù)據(jù)進(jìn)行CRC校驗(yàn),檢驗(yàn)通過后更新當(dāng)前編碼器的返回值。各個編碼器的接收數(shù)據(jù)時(shí)序圖如圖3所示。
圖3 編碼器接收數(shù)據(jù)時(shí)序圖Figure3 Encoder receives thedata timesequencediagram
在MA沒來到的時(shí)候,SLO一直處于高電平狀態(tài),完成確認(rèn)周期Ack后,會進(jìn)入高電平Star位和“0”位并傳輸數(shù)據(jù),數(shù)據(jù)傳輸完畢后,SLO會進(jìn)入低電平超時(shí)周期Timeout,編碼器準(zhǔn)備好進(jìn)行下一個周期的數(shù)據(jù)傳輸時(shí),SLO會置為高電平來提示FPGA端接口[8]。
控制端FPGA讀取數(shù)據(jù)采用SSI串行的方式進(jìn)行數(shù)據(jù)輸入,時(shí)序圖如圖4所示。
圖4 控制器讀取數(shù)據(jù)時(shí)序圖Figure4 Thecontroller reads thedatasequencediagram
當(dāng)時(shí)序的上升沿到來時(shí),編碼器端FPGA開始發(fā)送整合后114位數(shù)據(jù),其中Tm為低電平持續(xù)時(shí)間,約30μs,Tp為時(shí)鐘持續(xù)高電平,這里Tp≥Tm。在每次SSI通訊完畢后,首先對接收到的數(shù)據(jù)進(jìn)行校驗(yàn)位校驗(yàn),如果校驗(yàn)通過,則將該組數(shù)據(jù)保留用以六足平臺的控制,否則舍棄該組數(shù)據(jù),等待下一組數(shù)據(jù)的到來[9]。
該編碼器數(shù)據(jù)采集系統(tǒng)將應(yīng)用于六維并聯(lián)機(jī)構(gòu)上采集編碼器數(shù)據(jù),六維并聯(lián)機(jī)構(gòu)及2塊FPGA編碼器數(shù)據(jù)采集傳輸板如圖5所示。
圖5 六維并聯(lián)機(jī)構(gòu)與編碼器數(shù)據(jù)采集傳輸電路Figure5 Six-dimensional Parallel platform and encoder data collection transmission circuit
采集單個編碼器數(shù)據(jù)的數(shù)據(jù)傳輸過程如圖6所示,當(dāng)編碼器接收到時(shí)序信號MA時(shí),會按照圖2所示時(shí)序向編碼器直接接收端通過SLO發(fā)送相應(yīng)編碼器數(shù)據(jù),所傳輸?shù)臄?shù)據(jù)用二進(jìn)制表示為“010 1000 1100 1100”,轉(zhuǎn)化為十進(jìn)制表示為10444。編碼器端CRC校驗(yàn)采用的校驗(yàn)多項(xiàng)式為x6+x1+x0,生成的校驗(yàn)碼為“110000”。
圖6 編碼器1數(shù)據(jù)接收波形Figure6 Encoder 1 datareceive waveform
圖7所示為兩個FPGA之間的數(shù)據(jù)傳輸過程。當(dāng)接受到控制端FPGA發(fā)送的時(shí)序信號MA時(shí),采集端FPGA會將整合好的114位數(shù)據(jù)通過數(shù)據(jù)SLO發(fā)送出去。由于示波器屏幕顯示限制,將該信號用ChipScope進(jìn)行抓取分析,如圖8所示,傳輸?shù)?14位數(shù)據(jù)信號以十六進(jìn)制顯示為“7944DBB766B3BF0F39108E”。
圖7 SSI協(xié)議傳輸過程示波器采集信號Figure7 SSIprotocol transfer processoscilloscopecollection signal
圖8 控制端接收數(shù)據(jù)過程波形Figure8 Control end receivesthedataprocess waveform
圖9所示為通過Quartus中的Signal Tap和ISE的Chip Scope來抓取到的數(shù)據(jù)傳輸過程中的信號。由圖可知,控制端FPGA可以正確的接收到由6組編碼器數(shù)據(jù)整合后的114位數(shù)據(jù),并以編碼器1為例,對數(shù)據(jù)進(jìn)行解算,接收到的編碼器數(shù)據(jù)與傳送前的編碼器數(shù)據(jù)碼值一致,均為10444。
圖9 SSI協(xié)議發(fā)送端與接收端數(shù)據(jù)對比Figure9 SSIprotocol sendingend and receiving end datacontrast
經(jīng)過實(shí)物實(shí)驗(yàn)驗(yàn)證,編碼器數(shù)據(jù)采集端FPGA通過BISSC協(xié)議,并經(jīng)過CRC校驗(yàn),能夠正確地采集6組編碼器的當(dāng)前碼值,通過對采集到的編碼器數(shù)據(jù)進(jìn)行整合,控制端FPGA通過SSI協(xié)議與求和校驗(yàn),能夠正確解算出所傳輸過來的編碼器數(shù)據(jù)。該方案能夠很好地解決直接接收的多編碼器數(shù)據(jù)方案中傳輸線纜過多,占用FPGA端口過多與單獨(dú)FPGA處理6組編碼器數(shù)據(jù)運(yùn)算量大的問題。實(shí)驗(yàn)證明,該系統(tǒng)工作狀態(tài)穩(wěn)定,數(shù)據(jù)傳輸正確,能夠滿足六維并聯(lián)機(jī)構(gòu)控制所需要的編碼器數(shù)據(jù)采集需求。