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