摘 要: 實(shí)現(xiàn)了一種基于FPGA的絕對式碼盤智能接口的設(shè)計(jì),用以進(jìn)行絕對式編碼器和DSP處理器之間的通訊。此接口根據(jù)FPGA模塊化設(shè)計(jì)的特點(diǎn),把整個(gè)設(shè)計(jì)任務(wù)劃分為若干功能模塊,分別對這些模塊進(jìn)行設(shè)計(jì),最后把各個(gè)功能模塊進(jìn)行綜合,以完成整個(gè)設(shè)計(jì)。
關(guān)鍵詞: 絕對式編碼器; 接口; FPGA
光電編碼器是一種基本的位置、速度檢測反饋單元,廣泛應(yīng)用于變頻器、直流伺服、交流伺服等系統(tǒng)的閉環(huán)控制中[1]。為了減小編碼器的體積, 絕對式光電編碼器一般采用串行通訊方式輸出絕對二進(jìn)制編碼,對于伺服電機(jī)控制等高端場合,為了滿足快速的電流環(huán)、速度環(huán)以及位置環(huán)的控制速度需要,編碼輸出數(shù)據(jù)速度應(yīng)該非??欤陨喜焕蛩囟紝^對式編碼的接收增加了難度[2]。
世界各國的絕對式編碼器生產(chǎn)廠家大多為其編碼器配套了相應(yīng)的接收芯片,自動(dòng)完成串行編碼到并行編碼的轉(zhuǎn)換,方便了控制器的讀取操作。但是此類芯片通常價(jià)格比較昂貴,大約占絕對式編碼器價(jià)格的四分之一。目前國內(nèi)外高端交流伺服系統(tǒng)中普遍采用FPGA+DSP結(jié)構(gòu),DSP用來實(shí)現(xiàn)矢量變換和其他算法流程;FPGA用以實(shí)現(xiàn)譯碼、A、B、Z信號(hào)輸出、I/O擴(kuò)展等功能, FPGA中尚有很多資源沒有得到充分利用。本文研制了一種用于交流伺服系統(tǒng)中的基于FPGA的絕對式編碼器接口,實(shí)現(xiàn)與絕對式編碼器的雙工通訊,接收高速數(shù)據(jù)流,同時(shí)在FPGA內(nèi)部開辟RAM空間,將收到的編碼器數(shù)據(jù)存入RAM中,DSP可以以訪問內(nèi)存的方式讀取數(shù)據(jù),提高了工作速度。同時(shí),該接口還具有CRC(循環(huán)冗余校驗(yàn))校驗(yàn)等糾錯(cuò)功能,基本能夠替代廠家提供的專用接收芯片,大幅度降低了產(chǎn)品成本。
1 RCN223型絕對式編碼器
國內(nèi)外絕對式編碼器產(chǎn)品種類很多,如日本的多摩川精機(jī)、內(nèi)密控、德國的海德漢、美國的丹納赫、中國長春的三峰等[3]。其中海德漢的RCN223型絕對式編碼器采用的是海德漢公司專用的EnDat2.2位置編碼器雙向數(shù)字接口,它傳輸?shù)臄?shù)據(jù)類型分為位置值及附加信息或參數(shù)[4]。發(fā)送的信息類型由模式指令選擇。模式指令決定被發(fā)送信息內(nèi)容。每個(gè)模式指令包括三位。為確保可靠發(fā)送信息,每位均采用冗余發(fā)送(反相或兩次)。其發(fā)送位置值的模式指令為“000111”。
信號(hào)傳輸格式如圖1所示。
數(shù)據(jù)包發(fā)送與數(shù)據(jù)傳輸同步。傳輸周期從第1個(gè)時(shí)鐘下降沿開始。編碼器保存測量值并計(jì)算位置值。
2個(gè)時(shí)鐘周期后,后續(xù)電子設(shè)備發(fā)送模式指令。編碼器發(fā)送位置值后,從起始位開始由編碼器向后續(xù)電子設(shè)備傳輸數(shù)據(jù)。后續(xù)“錯(cuò)誤位”(“錯(cuò)誤1”和“錯(cuò)誤2”)是檢測類信號(hào),用于監(jiān)測故障。這兩個(gè)信號(hào)相互獨(dú)立地生成,它表示編碼器發(fā)生可導(dǎo)致不正確位置值的故障。發(fā)生故障的確切原因保存在“工作狀態(tài)”存儲(chǔ)器中,并可被詳細(xì)地查詢。
然后編碼器從最低有效位(LSB)開始發(fā)送絕對位置值。其長度取決于所用的編碼器,RCN223的絕對位置值為23位。位置值的數(shù)據(jù)發(fā)送以循環(huán)冗余校驗(yàn)(CRC)結(jié)束。
在數(shù)據(jù)字結(jié)尾處,必須將時(shí)鐘信號(hào)置為高電平。10~30 μs后或1.25~3.75 μs后(系統(tǒng)時(shí)鐘大于1 MHz時(shí))數(shù)據(jù)線返回低電平。然后,時(shí)鐘信號(hào)啟動(dòng)另一次數(shù)據(jù)發(fā)送。
2 絕對式編碼器接口的實(shí)現(xiàn)
全數(shù)字化交流伺服系統(tǒng)中采用TMS320X2812作為控制器,用以實(shí)現(xiàn)位置環(huán)、速度環(huán)和電流環(huán)以及SVPWM、電壓和電流采樣等功能。此外,采用Altera公司的型號(hào)為EP1C6的Cyclone系列FPGA實(shí)現(xiàn)與絕對式碼盤接口、譯碼邏輯等功能。同時(shí),在FPGA內(nèi)部實(shí)現(xiàn)了128 B的雙口RAM,通過總線實(shí)現(xiàn)與DSP之間的數(shù)據(jù)傳輸。FPGA部分的功能框圖如圖2所示[2,5]。
碼盤接口部分分為時(shí)鐘發(fā)生模塊、發(fā)送模塊、接收模塊、雙口RAM模塊、發(fā)送使能模塊5個(gè)部分。
首先由時(shí)鐘發(fā)生模塊產(chǎn)生周期為0.5 μs的方波信號(hào),取名為CLOCK,此信號(hào)作為通訊同步時(shí)鐘信號(hào)。在CLOCK的每個(gè)時(shí)鐘上升沿計(jì)數(shù)變量COUNT自加1,變量COUNT的初始值為0。當(dāng)發(fā)送使能模塊檢測到COUNT的值為3時(shí),說明編碼器已經(jīng)將位置值保存完畢,發(fā)送使能模塊使SENT_EN信號(hào)有效,發(fā)送模塊開始發(fā)送6位模式指令。當(dāng)檢測到COUNT的值為9時(shí),停止COUNT在每個(gè)時(shí)鐘上升沿計(jì)數(shù),停止發(fā)送數(shù)據(jù)并使接收使能信號(hào)RECEIVE_EN有效,從而使能接收模塊。接收模塊開始檢測數(shù)據(jù)輸入信號(hào)的上升沿,一旦上升沿到來說明收到數(shù)據(jù)起始位S,啟動(dòng)COUNT在每個(gè)時(shí)鐘上升沿計(jì)數(shù),以后在每個(gè)時(shí)鐘信號(hào)的上升沿保存位置值,直到檢測到COUNT的值為39時(shí),停止接收數(shù)據(jù),由接收模塊向雙口RAM模塊的A口寫入要保存的位置值,從而結(jié)束一次FPGA與編碼器的通訊過程。
由于每次通訊時(shí)間是嚴(yán)格固定的,設(shè)系統(tǒng)時(shí)鐘為2 MHz。FPGA為主叫,當(dāng)時(shí)鐘下降沿到來時(shí),編碼器保存位置值要2個(gè)時(shí)鐘周期,向編碼器發(fā)送“請求數(shù)據(jù)”控制字共6位,需時(shí)6個(gè)時(shí)鐘周期,編碼器向FPGA共發(fā)送1個(gè)起始位、2個(gè)“錯(cuò)誤位”、23位位置值和5位CRC校驗(yàn)位要31個(gè)時(shí)鐘周期,共39個(gè)時(shí)鐘周期,所以每次通訊需要19.5 μs的時(shí)間,并且每個(gè)時(shí)刻具體需要傳遞哪一位數(shù)據(jù)也是嚴(yán)格確定的。因此采用基于時(shí)基的設(shè)計(jì)方法。
在FPGA內(nèi)部實(shí)現(xiàn)了128 B的雙口RAM空間,A口具有8位數(shù)據(jù)線,7位地址線,用于與編碼器通訊,B口具有16位數(shù)據(jù)線,7位地址線,用于與DSP通訊,因?yàn)門MS320X2812為16位DSP,所以與FPGA中RAM的數(shù)據(jù)傳遞極為方便。
DSP在每個(gè)電流環(huán)周期發(fā)送一個(gè)有效的“begin”信號(hào),19.5 μs之后,碼盤信號(hào)接收模塊將接收到數(shù)據(jù)存入FPGA內(nèi)部雙口RAM的A口中,并按順序排列成16位數(shù)據(jù)的形式,然后向DSP發(fā)送end信號(hào),表示一次通訊結(jié)束,DSP接收到中斷之后從FPGA的雙口RAM的B口中讀取數(shù)據(jù),完成一次通訊,DSP的連接如圖3所示。
在該接口的研發(fā)過程中,對FPGA的開發(fā)采用Altera公司的Quartus II 5.0集成環(huán)境,硬件描述語言為VHDL語言。圖4為主程序流程圖。
圖5為碼盤與FPGA之間的通訊波形,從位置信號(hào)可以看出該接口工作正常。
本文設(shè)計(jì)了一種基于FPGA的絕對式碼盤智能接口,用以進(jìn)行絕對式編碼器和伺服驅(qū)動(dòng)器DSP處理器之間的通訊,并且具有CRC校驗(yàn)等糾錯(cuò)功能。該接口基本可以替代價(jià)格昂貴的專用接口芯片,降低產(chǎn)品的成本,促進(jìn)伺服電機(jī)驅(qū)動(dòng)器的國產(chǎn)化進(jìn)程。
參考文獻(xiàn)
[1] 朱孝立.新型縮微計(jì)量光柵傳感器開發(fā)與應(yīng)用[J].傳感器世界,2005(10):47-49.
[2] 于泳,楊明,貴獻(xiàn)國,等.基于FPGA的絕對式編碼器智能接口設(shè)計(jì)[J].微特電機(jī),2008(1):4-6.
[3] 約翰內(nèi)斯·海德漢博士(中國)有限公司.ENDAT2.2-位置編碼器雙向數(shù)字接口.海德漢技術(shù)資料. 2007.
[4] Master Component for EnDat 2.2.http://www.MAZeT. de.
[5] 周志煒.基于FPGA的多路光電編碼器數(shù)據(jù)采集系統(tǒng)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2006.