周光澤 陳光勝
摘 要:為精確測量角度位置電機閉環(huán)控制,提出基于FPGA的BISS-C協(xié)議寄存器配置與數據讀取方法。首先研究BISS-C協(xié)議組網方式與幀格式,闡述寄存器讀寫模式與數據讀取模式;然后針對正余弦編碼器細分芯片IC-NQC,利用FPGA芯片靈活性及并行運行效率高等特點,通過狀態(tài)機設計寄存器讀寫電路與數據傳輸電路,實現對IC-NQC芯片參數配置與數據讀取。采用精密擺動電機進行實驗驗證。實驗數據為MA時鐘頻率5mHz,數據交換周期100kHz,滿足精密擺動電機運動控制定位要求。
關鍵詞:BISS-C;FPGA;寄存器配置;數據交換;微特電機
DOI:10. 11907/rjdk. 201165
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2020)010-0179-05
Abstract: In order to meet the accuracy requirements of digital galvanometer motion control system for position measurement, this paper proposes a method for register configuration and data reading of BISS-C protocol based on FPGA,conducts circuit design and experimental verification for this method. First, the BISS-C protocol networking mode and frame format are studied, and its register configuration mode and data read mode are described in detail. Then, for the features of FPGA flexibility and high parallel operation efficiency, the register configuration circuit and data transmission circuit are designed by the state machine. The experimental verification is conducted by galvanometer motor. In the experiment, the MA clock frequency is 5mHZ and the data exchange period is 100kHZ. Its reliability and accuracy meet the positioning requirements of the digital galvanometer motion control system.
Key Words: BISS-C; FPGA; register configuration; data exchange; micro special motor
0 引言
在精密擺動電機運動控制系統(tǒng)中常采用增量式編碼器測量電機角度值[1]。相對于傳統(tǒng)的方波編碼器,正余弦編碼器具有分辨率可拓展優(yōu)點。由于受到碼盤加工工藝、電源波動、環(huán)境溫度變化、讀數頭的非線性等因素影響,位置檢測元件輸出的正余弦編碼器信號常具有直流電平誤差、幅值誤差、正交相位誤差、諧波分量誤差、噪聲誤差等,直接影響伺服控制系統(tǒng)精度與可靠性[2]。對正余弦編碼器輸出角位置信號誤差進行有效修正與補償,采用合適的插值方法從正余弦信號中提取高分辨率的位置信息以滿足伺服系統(tǒng)高精度控制要求,具有重要的研究與應用價值。
為提高正余弦編碼器測量精度,需求解正余弦信號周期內的精確相位獲得更高精度,該方法稱為細分技術。常用的細分方法有正切直接計算法[3]、閉環(huán)跟蹤法[4]、CORDIC算法[5]、麥克勞林級數法[6]等。文獻[7]提出采用DSP處理器設計CORDIC算法方案,對11位正余弦編碼器細分,最終采樣電路分辨率達到29位,但在實際工程應用中存在浪費芯片資源和通信效率不高的缺點。因此,為保證高精密電機控制系統(tǒng)采樣速率,本文選用IC-Haus正余弦編碼器細分芯片IC-NQC對編碼器正余弦信號進行細分。基于動態(tài)閉環(huán)跟蹤細分技術的IC-NQC芯片可靈活轉換正余弦信號,并通過BISS-C通信協(xié)議輸出絕對值角度信號,以提高通信效率和細分精度。
BISS(Bidirectional Synchronous Serial)是IC-Haus公司開放的一種數字通信接口協(xié)議[8]。BISS通信協(xié)議為主機和傳感器提供雙向通信標準,適用于實時數據采集。相對于ENDAT協(xié)議,BISS在組網方式和線補償方式上具有領先優(yōu)勢。BISS協(xié)議最新版本BISS-C協(xié)議,與之前的Biss版本完全兼容。BISS協(xié)議的解碼方式包括軟件解碼和硬件解碼;文獻[9]采用DSP芯片作為數據采樣主控芯片解碼方案,最終數據交換周期可達40[μ]s。相對于串行運算的軟件解碼,并行運算的硬件解碼可提供更高的通信效率。硬件解碼可通過FPGA和BISS Master解碼芯片實現。BISS Master靈活性較差、成本較高,不利于商用。FPGA芯片因其并行運行,性能強大且拓展性較好,是一種較為理想的通信解碼方式。因此,本設計選用XILINX公司的SPARTAN-6系列FPGA芯片用以實現BISS-C通信協(xié)議硬件解碼。
1 BISS-C通訊協(xié)議
1.1 BISS-C組網方式
BISS-C通信協(xié)議是一種全雙工同步串行通信協(xié)議,BISS-C組網方式包括總線(bus)和點對點(point-to-point)兩種模式。
總線(bus)模式配置中,所有連接設備首尾相連,每個設備包含多個從接口,主設備接口可在一個數據交換周期內與多個從接口進行通信。如圖1所示,每個從機接口包含兩個端子(SLI和SLO),SLI線用于接收前端發(fā)射信號,SLO線用于發(fā)射信號。SLO和SLI以鏈狀形式連接所有主從接口。主控接口通過MA信號線向所有從設備提供時鐘信號。第一個從接口(first slave)即第一個數據傳輸到主機的從接口,其SLO線直接連接到主SL信號線上。主機MO接口連接到最后一個從接口(last slve)SLI信號線上。不同于BISS-B協(xié)議連接的從接口只有8個,BISS-C協(xié)議從機沒有數量限制,體現了BISS-C通信協(xié)議的優(yōu)越性。
點對點(point-to-point)模式中,主控接口(master)只連接一個帶有若干從接口(slave)的從機。通過差分信號,主機向傳感器提供時鐘脈沖MA,從接口通過SL信號線同步將數據回傳給主機。在點對點模式中,BISS-C通信協(xié)議只有兩根差分信號線,與SSI協(xié)議和BISS-B協(xié)議完全匹配。本實驗采用點對點配置方式,主機為FPGA,從機為IC-NQC細分器,如圖2所示。
1.2 BISS-C幀格式
點對點模式中,BISS-C通信幀時序如圖3所示。當空閑時,主接口MA時鐘線發(fā)送高電平,SLO信號線反饋保持高電平,表明從機準備進行數據通信。通信開始時,主接口發(fā)送時鐘信號向從接口申請數據通信。時鐘信號MA第一個上升沿同步從接口,第二個上升沿發(fā)送口,SLO反饋發(fā)送低電平,生成“ACK”位。實際上,由于通信線延遲(line-delay),MA時鐘信號和SLO信號會產生一定的延遲,所以BISS-C通信協(xié)議規(guī)定每個數據交換周期開始后都要檢測線延遲。ACK保持低電平直到檢測完成,SLO發(fā)送表示START位的高電平,隨后發(fā)送CDS(control data slave)標志位。之后的若干位都是數據位,反饋周期信號和角度信號。數據信息發(fā)送完成,SLO信號線反饋低電平,表示“TIMEOUT”位,至此一個數據通信周期結束。在TIMEOUT超時這段時間內,MA發(fā)送CDM(control data master)位。超時結束,MA和SLO再次置高,準備下一次數據交換。
1.3 寄存器通信與數據讀取通信
1.3.1 寄存器讀寫通信模式
BISS-C協(xié)議通過多個MA時鐘信號末尾掛載的CDM位組成控制幀,實現寄存器讀寫通信功能。在寄存器模式之前,CDM位至少發(fā)送14個“0”。然后CDM位發(fā)送“1”,開啟寄存器讀寫權限。緊隨其后, CDM位發(fā)送3位從地址接口ID、7位寄存器地址ADR和4位CRC校驗碼。接下來R(READ)和W(WRITE)字節(jié)決定BISS通信幀是寫訪問(RW=“01”)還是讀訪問(RW=“10”)。如圖4所示,當開始寫訪問時,RW位后跟著1位起始位S、8位數據字節(jié)、4位CRC位和一位終止位P(P=”0”)。如圖5所示,開始讀訪問時,緊隨RW位后為1位S和12個“0”bit及1位終止位P,而CDS通信幀反饋8位數據和4位CRC校驗碼。
1.3.2 數據讀取通信
BISS-C協(xié)議規(guī)定, CDM位發(fā)送“0”開始讀取數據,CDS位作為CDM位的反向進行校驗,其余通信幀時序與點對點通信時序一致。
2 IC-NQC芯片通信接口電路設計
2.1 硬件平臺設計
本文基于精密擺動電機運動控制系統(tǒng)位置數據采集模塊進行實驗。主控芯片采用XILINX公司研發(fā)的SPARTAN-6-25芯片,編譯環(huán)境為ISE14.7,硬件描述語言為VERILOG HDL語言。為增加位置數據采集精度,本實驗采用IC-HAUS公司開發(fā)的正余弦編碼器細分器IC-NQC芯片對振鏡電機搭載的傳感器正余弦信號進行細分。IC-NQC細分芯片可轉換正余弦信號輸出增量信號,也可輸出絕對值信號。本實驗采用讀取絕對值信號功能,通信協(xié)議為BISS-C。
硬件電路如圖6所示。振鏡電機正余弦編碼器正弦差分信號SIN+、SIN-,余弦差分信號COS+、COS-分別連接在IC-NQC芯片正余弦信號管腳上。IC-NQC芯片SLO與MA管腳經74LCX541MTC線路驅動器處理后傳給FPGA芯片,與FPGA 進行數據交換。之后通過ISE14.7編譯器搭載的Chipscope數字示波器讀取電機角度數據和周期數據。
2.2 寄存器參數
IC-NQC是一個單芯片細分器,具有AD轉換功能。應用計數矢量跟隨功能,可選擇分辨率和遲滯,且兼容SSI和BISS通信協(xié)議。前端增益可設置成階段式以適應所有通用傳感器信號,通過BISS-C協(xié)議寄存器讀寫模式配置IC-NQC芯片寄存器值設置所需功能。
IC-NQC具有34個寄存器,啟動后芯片RAM內容隨機。IC-NQC沒有默認配置,錯誤管腳NERR會輸出一個低電平,數據輸出SLO、增量信號AB和Z輸出一個高電平。為減小器件配置時間,最大的3uS短超時(TIMO=1,TOA=0)臨時有效。
通過I/O接口訪問IC-NQC時,芯片忽略TIMO、TOA、RPL和TMA寄存器值。IC-NQC芯片執(zhí)行長超時,通過CDM位評估BISS寄存器通信。在每個信號位(CDM位)通信周期,MA時鐘周期至少要持續(xù)4個時鐘脈沖,即在SLO管腳反饋CDS位后,MA時鐘信號線發(fā)送CDM信號觸發(fā)超時(TIMEOUT)。圖7為一個典型的寄存器配置最小周期。
寄存器配置步驟如下:①發(fā)送14個“CDM=0”bit,初始化IC-NQC芯片;②初始化后,SELSSI、RPL、TMA、TIMO寄存器位需要復位(“CDM=0”),SELSSI地址位ADR為0X02,RPL地址為0X03,TMA和TIMO地址為0X06;③依次從地址0X00到0X0C寫入寄存器參數。根據所需,本實驗設置信號調理增益2.667倍(GAIN=0X00),二進制分辨率為4 096(SELRES=0X04),通信協(xié)議選擇BISS-C(ENCDS=0X01),周期計數輸出為12位(M2S=0X02),其余未使用寄存器參數配置為“0”。
2.3 FPGA通信接口狀態(tài)機設計
IC-NQC芯片時序如圖8所示。
由圖9可以看出,空閑時,MA時鐘線和SLO信號線都置高。系統(tǒng)開始工作后,MA線發(fā)送時鐘脈沖,第2個上升沿時,SLO信號線響應ACK位。隨后依次反饋START和CDS位。以此為標志,之后的位數即是傳感器旋轉周期數據、角度數據、兩位ERROR和CRC校驗碼。若為寄存器配置模式,則可忽略周期與角度數據,直接在CDS后MA發(fā)送CDM位。正常讀取數據時,依次檢測ERROR位和CRC校驗碼。若正確保存數據后進入超時,則準備讀取下一次數據,若不正確則重新進入空閑狀態(tài)。
根據BISS-C協(xié)議特點,將FPGA程序按需要進行模塊化,包括IP核ROM(存儲寄存器參數)、時鐘模塊,寄存器配置和數據讀取模塊、CRC校驗模塊。
(1)時鐘模塊需要產生MA時鐘脈沖信號。本實驗中,FPGA始終為20MHz,通過計數器產生通信中MA線需要10MHz時鐘。在完成一輪數據傳輸后,SLO信號線變成低電平,進入TIMEOUT超時狀態(tài)。此時若為正常讀取模式,MA線上時鐘停止。MA線置高(CDM=0, CDM數值和MA時鐘脈沖數值反向)。若為寄存器配置模式,MA線依次取ROM核中存儲的寄存器數據。
(2)IC-NQC寄存器參數眾多,在配置寄存器前需要初始化,在寄存器參數配置時需要寫入736個CDM位,本實驗采用XILINX公司自帶的ROM IP核實現數據存儲。首先創(chuàng)建一個后綴為coe的系統(tǒng)文件,輸入736個寄存器參數,隨后在寄存器配置模塊中調用ROM核即可。
(3)寄存器配置和數據讀取模塊由一個有限狀態(tài)機實現。一個BISS通信周期可以傳輸角度數據,也可以通過“CDM”位設置寄存器參數。因此,前736個通信周期作為寄存器配置,使用計數器記錄個數,主機忽略CDS位后的數據位。在CDS信號反饋后,MA線發(fā)送CDM數據直接進入超時。寄存器設置完后進入正常數據讀取模式接收數據,并調用CRC校驗模塊對數據進行驗證。有限狀態(tài)機結構如圖9所示。
(4)為保證數據傳輸的可靠性,BISS-C通信協(xié)議采用循環(huán)冗余校驗(CRC)。CRC校驗碼是數據通信領域常用的一種差錯校驗碼。數據讀取模塊接收12位周期數據、10位位置數據、2位檢測信號和6位CRC校驗碼共30位數據,其多項式為[x6+x1+x0]。傳輸完成后,運算CRC模塊與校驗碼100101,如果30位數據與校驗碼100101模二運算余數為0,則校驗通過,數據保存。若余數不是0,則重新進行數據讀取。
3 實驗測試結果
實際傳輸波形如圖10所示,上方通道是MA信號線波形,下方通道是SLO數據信號線波形。從圖中可以看出,信號傳輸波形和BISS-C通信波形是一致的。根據寄存器參數設置,SLO信號線反饋12位周期數據、12位角度數據、2位ERROR、6位CRC校驗碼。由此可見,上位機可正確接收數據。MA一個時鐘脈沖周期為200ns,頻率為5mHz;一個數據交換周期為10[μs],數據交換可達到100kHz。
精密擺動電機結構特殊,電機轉動有兩個極限位置,其夾角為24°。將擺動電機轉子擺動到正極限位置,系統(tǒng)上電,角度讀數101000110000,周期讀數000000000000。隨后將電機轉動到負極限位置,角度讀數為010100111001,周期讀數為000010000011??梢钥闯鲭姍C偏轉24°,電機內部正余弦編碼器經過131個正余弦周期,正余弦編碼器分辨率為2 048。IC-NQC細分器設置分辨率為4 096,角度數據測量分辨率達到[223],讀取過程中數字無抖動,滿足精密電機精度和穩(wěn)定性要求。
4 結語
根據精密擺動電機運動控制系統(tǒng)實時性和精度要求,本文采用正余弦傳感器編碼器作為測角元件,使用基于閉環(huán)動態(tài)跟蹤技術的正余弦編碼器細分器IC-NQC芯片細分編碼器正余弦信號。通過FPGA配置IC_NQC芯片寄存器及讀取擺動電機角度數據。本設計中,MA時鐘周期達到5mHz,數據交換周期達到100kHz ,采樣分辨率為[223],采樣數據未發(fā)生跳變。
實驗結果表明,針對傳統(tǒng)的增量式方波編碼器分辨率難以提高問題,正余弦編碼器可利用閉環(huán)跟蹤等細分技術提高伺服系統(tǒng)位置信號采樣分辨率。BISS-C通信協(xié)議不僅具有雙向、高速、同步傳輸特性,還具有線路時分復用優(yōu)點,寄存器配置和數據通信可在一個通信周期內傳輸,體現出通信協(xié)議的穩(wěn)定性和便利性。本設計集成了正余弦信號細分技術和基于BISS-C通信協(xié)議的位置信號采集方案,可滿足精密電機高精度、高速和實時性要求,具實用價值。
參考文獻:
[1] 常怡萍,楊蕾. 基于BISS協(xié)議的絕對值編碼器數據采集[J]. 電子測量計數,2017,40(4): 92-95.
[2] 王列虎,皮佑國. 基于BISS協(xié)議的編碼器接口技術研究及應用[J]. 機床與液壓,2011,39(8):103-105,121.
[3] CHARLES F L. Implementation of a high-speed sinu-soidal encoder interpolation system[D]. Virginia:Virginia Polytechnic Institute and State University,2004.
[4] 吳立,羅欣,沈安文,等. 基于閉環(huán)跟蹤法的正余弦編碼器細分技術[J]. 計算機技術與自動化,2011,30(4):5-8.
[5] 盧少武,唐小琦,馬澤龍. CORDIC算法在光柵莫爾條紋細分中的應用[J]. 自動化儀表,2010,9(5): 23-25.
[6] 劉海龍. 麥克勞林級數法求取光電編碼器轉子位置算法[J]. 傳感技術學報,2013,26(5): 616-621.
[7] 裴世聰,魏冬冬,文長明,等. 一種正余弦編碼器高精度信號處理系統(tǒng)的設計與仿真[J]. 機械工程師,2017(9):24-27.
[8] 王希遠,成榮,朱煜,等. 基于FPGA的BISS-C協(xié)議編碼器接口技術研究及解碼實現[J]. 液晶與顯示,2016,31(4):386-391.
[9] 王洪娟,邢柏強,劉巖,等. 基于BISS C 模式編碼器數據采集及顯示系統(tǒng)設計[J]. 導彈與航天運載技術,2016,348(4):99-101.
[10] 張道勇,黃楊根,張輝. 編碼器正余弦信號細分技術應用研究[J]. 機床與液壓,2015,43(16):147-149.
[11] 黎家耀,王,晗,姚洪輝,等. 基于 Verilog 的雙讀數頭光柵尺測量控制電路設計[J]. 信息與電腦,2019,18(24):82-85.
[12] 商懷昊,韓基鵬,肖鵬,等. 基于BISS-C協(xié)議的編碼器的接口技術研究及其在伺服驅動系統(tǒng)中的應用[J]. 工業(yè)技術創(chuàng)新,2014,1(2):211-215.
[13] 陳燕,劉守山. 基于CPLD的光電編碼器四倍頻電路的設計[J]. 國外電子測量技術,2015,34(1):45-48.
[14] 樊勇. 基于絕對編碼器的數據采集[J]. 現代電子技術,2011,34(3):107-109.
[15] LING S. DSP solution for high- resolution position with sin/cos-encoders[J]. International Conference on System Science, Engineering Design and Manufacturing Informatization, 2010(2):285-288.
[16] 肖鯤,王莉娜. 基于FPGA 的 BISS 協(xié)議光電編碼器通信模塊設計[J]. 電子測量技術2008,31(7):188-191.
[17] QIN J, YE Y T, LIU J X.A new method of signal processing of photoelectric encoder in visual optical robot with multi-phalanges [C]. International Conference on Computational Problem-solving.2012:251- 254.
[18] 高長清,林輝,張輝. BISS接口的光電編碼器數據讀出研究[J]. 計算機測量與控制,2009,17(5):957-958.
[19] 彭超越,張家洪,李川. 基于ARM Cortex-A9的烹飪機器人直流電機控制系統(tǒng)[J]. 軟件導刊,2018,17(5):31-33.
[20] EKLUND N. CORDIC: elementary function computation using recursive sequences [J].? College Mathematics Journal,1999, 32 (5):330- 333.
[21] 趙長海,萬秋華,梁立輝,等. 小型高精度航天級光電編碼器[J]. 電子測量與儀器學報,2015,29(8):1224-1230.
[22] 韓竺秦,張麗娜. 兩輪平衡機器人控制系統(tǒng)設計與仿真研究[J]. 軟件導刊,2019,18(3):86-90.
(責任編輯:杜能鋼)