基于FPGA的RCN226絕對式編碼器通信接口設(shè)計
0 引言
光電碼盤是一種基本的位置、速度檢測反饋單元,非常廣泛地應(yīng)用于變頻器、直流伺服、交流伺服等系統(tǒng)的閉環(huán)控制中。為了減小體積,絕對式編碼器一般采用串行通信方式輸出絕對編碼,針對伺服電機控制等高端場合,為了滿足快速的電流環(huán)、速度環(huán)、位置環(huán)的控制需要,編碼輸出的速度又應(yīng)該非???,這些不利因素都對絕對式編碼的接收增加了難度。
絕對式編碼器廠家大多為其編碼器配套了接收芯片,實現(xiàn)串行編碼到并行編碼的轉(zhuǎn)換,便于控制器的讀取操作。但是此類芯片通常價格比較昂貴,大約占絕對式編碼器價格的四分之一。目前國內(nèi)外高端交流伺服系統(tǒng)中普遍采用FPGA+DSP結(jié)構(gòu)。DSP用來實現(xiàn)矢量變換和其它算法流程;FPGA用以實現(xiàn)譯碼、A、B、 Z信號輸出、I/O擴展等功能,F(xiàn)PGA中尚有很多資源沒有得到充分利用。本文研制了一種用于交流伺服系統(tǒng)中的基于FPGA的絕對式編碼器智能接口,實現(xiàn)與絕對式編碼器的雙工通信,接收高速數(shù)據(jù)流,同時在FPGA內(nèi)部開辟RAM空間,將收到的編碼器數(shù)據(jù)存入RAM中,DSP可以以訪問內(nèi)存的方式讀取數(shù)據(jù),提高了工作速度。同時,該接口還具有奇偶校驗等糾錯功能,完全可以替代廠家提供的接收芯片,大幅度降低了產(chǎn)品成本。
1 RCN226型絕對式編碼器
國內(nèi)外絕對式編碼器生產(chǎn)廠商很多,如日本的多摩川精機、德國的海德漢、國產(chǎn)的長春三峰等。其中海德漢的RCN226型絕對式編碼器采用的是海德漢公司專用的EnDat2.2一位置編碼器雙向數(shù)字接口,它傳輸?shù)臄?shù)據(jù)類型分為位置值、位置值及附加信息或參數(shù)。發(fā)送的信息類型由模式指令選擇。模式指令決定被發(fā)送信息的內(nèi)容。每個模式指令包括三個位。為確??煽堪l(fā)送信息,每個位均采用冗余發(fā)送(反相或兩次)。其發(fā)送位置值的模式指令為"000111"。信號傳輸格式如圖1所示。
數(shù)據(jù)包發(fā)送與數(shù)據(jù)傳輸同步。傳輸周期從第一個時鐘下降沿開始。編碼器保存測量值并計算位置值。兩個時鐘周期后,后續(xù)電子設(shè)備發(fā)送模式指令。編碼器發(fā)送位置值后,從起始位開始由編碼器向后續(xù)電子設(shè)備傳輸數(shù)據(jù)。后續(xù)"錯誤位"-"錯誤1"和"錯誤2"是檢測類信號,用于監(jiān)測故障。這兩個信號相互獨立地生成,它表示編碼器發(fā)生可導(dǎo)致不正確位置值的故障。發(fā)生故障的確切原因保存在"工作狀態(tài)"存儲器中,并可被詳細地查詢。
然后編碼器從最低有效位(LSB)開始發(fā)送絕對位置值。
其長度取決于所用的編碼器,RCN226的絕對位置值為26位。位置值的數(shù)據(jù)發(fā)送以循環(huán)冗余校驗(CRC)結(jié)束。在數(shù)據(jù)字結(jié)尾處,必須將時鐘信號置為高電平。10至30 μ s后或1.25至3.75 μ s后(系統(tǒng)時鐘大于1MHz時)數(shù)據(jù)線返回低電平。然后,時鐘信號啟動另一次數(shù)據(jù)發(fā)送。
2 絕對式編碼器接口的實現(xiàn)
全數(shù)字化交流伺服系統(tǒng)中采用TMS320X2812作為控制器,用以實現(xiàn)位置環(huán)、速度環(huán)和電流環(huán)以及SVPWM、電壓和電流采樣等功能。此外,采用Altera公司的型號為FP1C6的~Cyclone系列FPGA,用以實現(xiàn)與絕對式碼盤接口、譯碼邏輯等功能。同時,在FPGA內(nèi)部實現(xiàn)了256字節(jié)的雙口RAM,用來與DSP之間通過總線實現(xiàn)數(shù)據(jù)傳輸。FPGA部分的功能框圖如圖2P所示。
碼盤接口部分分為發(fā)送模塊、接收模塊、雙口RAM模塊、主程序模塊四部分。由于每次通信時間是嚴格固定的,設(shè)系統(tǒng)時鐘為2MHz。FPGA為主叫,向編碼器發(fā)送"請求數(shù)據(jù)"控制字共6位,需時3 μs,編碼器向FPGA共發(fā)送1個起始位、兩個"錯誤位"、26位位置值和5位CRC校驗位,共34位的數(shù)據(jù)共需時17 μs,所以每次通信需要20 μs的時間,并且每個時刻具體需要傳遞哪一位數(shù)據(jù)也是嚴格確定的。因此采用基于時基的設(shè)計方法。
FPGA內(nèi)部設(shè)計了一個時基為20ns的計數(shù)器,每20ns加1,作為整個電路的時基,根據(jù)這個時基來確定每一時刻收到的數(shù)據(jù)具體屬于哪個位。在FPGA 內(nèi)部實現(xiàn)了256bytes的雙口RAM空問,A口具有8位數(shù)據(jù)線,8位地址線,用于與編碼器通信,B口具有16位數(shù)據(jù)線,8位地址線,用于與DSP通信,因為TMS320X2812為16位DSP,所以與FPGA中RAM的數(shù)據(jù)傳遞極為方便。
DSP在每個電流環(huán)周期發(fā)送一個有效的"begin"信號,20μs之后,碼盤信號接收模塊將接收到的數(shù)據(jù)存入FPGA內(nèi)部雙口RAM的A口中,并按順序排列成16位數(shù)據(jù)的形式,然后向DSP發(fā)送end信號,表示一次通信結(jié)束,DSP接收到中斷之后從FPGA的雙口RAM的B口中讀取數(shù)據(jù),完成一次通信, DSP的連接如圖3所示。
在本接口的研發(fā)過程中,對FPGA的開發(fā)采用Altera公司的Quartus II 5.1集成環(huán)境,硬件描述語言為VHDL語言。圖4為主程序流程圖。
圖5為碼盤與FPGA之間的通信波形,從位置信號可以看出該接口工作正常。 |
3 結(jié)束語 |