李紹軍 陳國(guó)勝 范俊玲 夏偉光 王國(guó)右
摘?要:BiSS協(xié)議是一種高速同步串行通信協(xié)議,使用BiSS協(xié)議的編碼器有利于提高伺服控制系統(tǒng)的動(dòng)態(tài)性能,在高精度絕對(duì)式編碼器中應(yīng)用廣泛。本文在分析BiSS協(xié)議數(shù)據(jù)幀特點(diǎn)的基礎(chǔ)上,利用FPGA設(shè)計(jì)了BiSS協(xié)議編碼器解碼器,采集了BiSS協(xié)議編碼器位置數(shù)據(jù)和總線波形,通過(guò)與DSP聯(lián)合使用,基于BiSS協(xié)議編碼器對(duì)永磁同步電機(jī)的動(dòng)態(tài)性能進(jìn)行了驗(yàn)證,結(jié)果表明該設(shè)計(jì)的合理性。
關(guān)鍵詞:BiSS;FPGA;編碼器;DSP
0 引言
BiSS協(xié)議是一種時(shí)鐘頻率高達(dá)10 MHz的串行通信協(xié)議,物理上采用RS422差分總線方式,使用BiSS通信協(xié)議的光電編碼器具有數(shù)據(jù)線占用少、抗干擾性強(qiáng)、通信速率快等優(yōu)點(diǎn),在機(jī)器人、數(shù)控機(jī)床、雷達(dá)轉(zhuǎn)臺(tái)等領(lǐng)域應(yīng)用廣泛[1-2]。
一些新型微控制器已經(jīng)具備了物理上支持BiSS通信協(xié)議的外設(shè)接口,如Infineon公司的XMC4000系列使用SPI接口可完成BiSS協(xié)議解碼功能[3],但當(dāng)進(jìn)行伺服電機(jī)控制時(shí)需要CPU在執(zhí)行FOC算法的基礎(chǔ)上實(shí)時(shí)通過(guò)較復(fù)雜的軟件實(shí)現(xiàn)BiSS協(xié)議解碼,增加了CPU的負(fù)擔(dān);TI公司的TMS320F3837x系列使用CLB模塊配合SPI外設(shè)接口實(shí)現(xiàn)對(duì)BiSS協(xié)議的解碼[4],可以減輕CPU的負(fù)擔(dān),但CLB外設(shè)數(shù)量有限。且這些方式均難以達(dá)到BiSS協(xié)議最高時(shí)鐘頻率,綜合比較使用FPGA解碼可降低CPU負(fù)擔(dān)同時(shí)可充分發(fā)揮BiSS協(xié)議時(shí)鐘頻率高的優(yōu)點(diǎn)。
文中針對(duì)BiSS協(xié)議數(shù)據(jù)幀格式,設(shè)計(jì)了BiSS協(xié)議解碼器狀態(tài)機(jī)和CRC校驗(yàn)器,并使用Moldisim對(duì)校驗(yàn)過(guò)程進(jìn)行仿真,F(xiàn)PGA將解碼數(shù)據(jù)發(fā)送給DSP,通過(guò)驅(qū)動(dòng)永磁同步電機(jī)對(duì)該設(shè)計(jì)的解碼效果進(jìn)行了驗(yàn)證。
1 解碼器硬件設(shè)計(jì)
1.1 BiSS協(xié)議分析
旋轉(zhuǎn)編碼器是伺服電機(jī)常用的一種位置傳感器,常見外部接口形式有RS422、SSI、BiSS等。使用RS422或者SSI接口時(shí)時(shí)鐘頻率一般低于1 MHz,且受限于總線協(xié)議單幀傳輸位數(shù)限制,當(dāng)需要傳輸?shù)奈恢脭?shù)據(jù)位數(shù)較多時(shí)會(huì)導(dǎo)致編碼器位置采樣頻率偏低。另一種常見位置傳感器是旋轉(zhuǎn)變壓器,隨著技術(shù)的不斷發(fā)展,當(dāng)前旋轉(zhuǎn)編碼器更容易實(shí)現(xiàn)比旋轉(zhuǎn)變壓器更高的分辨率,而BiSS協(xié)議由于時(shí)鐘頻率高,傳輸位數(shù)多,可以輕松實(shí)現(xiàn)對(duì)位置數(shù)據(jù)20 kHz的采樣頻率,因此使用BiSS協(xié)議的旋轉(zhuǎn)編碼器十分適用于動(dòng)態(tài)性能要求高的伺服控制領(lǐng)域。
BiSS協(xié)議最初由德國(guó)IC-Haus公司提出,是一種較為新型的開放式同步串行通信總線協(xié)議,在提出后很快開發(fā)出BiSS-B協(xié)議并得到廣泛應(yīng)用,后由于海德漢公司對(duì)BiSS-B協(xié)議的專利訴求,導(dǎo)致很多編碼器廠商聯(lián)合開發(fā)出BiSS-C協(xié)議[5-6]。
根據(jù)工作模式,BiSS協(xié)議可分為傳感器模式和寄存器模式,寄存器模式便于使用者掌握更多編碼器狀態(tài)信息,傳感器模式與寄存器模式相比傳輸信息少,因此具有更高的位置采樣頻率。圖1所示為亨士樂(lè)公司BiSS-B協(xié)議編碼器時(shí)序和雷尼紹公司BiSS-C協(xié)議編碼器時(shí)序?qū)Ρ葓D,見文獻(xiàn)[7-8]。
由圖中可見,BiSS-B和BiSS-C協(xié)議高度相似,均由2條信號(hào)線構(gòu)成,其中一條為時(shí)鐘線,另一條為數(shù)據(jù)線。數(shù)據(jù)線上均有Ack位、Start位、位置數(shù)據(jù)位、error位、Warn位、CRC校驗(yàn)位和Timeout位;不同點(diǎn)在于BiSS-C協(xié)議在Start位和位置數(shù)據(jù)位間還有額外的1 bit 0位。
文中就BiSS-B協(xié)議的旋轉(zhuǎn)編碼器傳感器模式展開討論。
1.2 硬件電路設(shè)計(jì)
電機(jī)控制模塊采用DSP+FPGA雙控制器方式,F(xiàn)PGA負(fù)責(zé)采集與永磁同步電機(jī)同軸安裝的BiSS編碼器位置數(shù)據(jù),提供給DSP用于FOC算法計(jì)算。FPGA通過(guò)內(nèi)部定時(shí)器定時(shí)執(zhí)行BiSS數(shù)據(jù)解碼周期,每個(gè)周期內(nèi)BiSS時(shí)序解碼模塊產(chǎn)生BiSS總線MA時(shí)鐘,直到該幀數(shù)據(jù)時(shí)序完成,同時(shí)接收BiSS總線SLO數(shù)據(jù)線數(shù)據(jù),根據(jù)BiSS時(shí)序定義從中提取出有用的位置、錯(cuò)誤位、警告位、CRC校驗(yàn)位數(shù)據(jù)段送至CRC校驗(yàn)?zāi)K進(jìn)行處理,根據(jù)BiSS編碼器的時(shí)序長(zhǎng)度可以靈活調(diào)整定時(shí)器采樣頻率,以實(shí)現(xiàn)最大采樣頻率。CRC校驗(yàn)?zāi)K按照協(xié)議規(guī)定的校驗(yàn)規(guī)則計(jì)算出收到有效數(shù)據(jù)位所對(duì)應(yīng)的CRC校驗(yàn)碼,并與收到數(shù)據(jù)中的CRC校驗(yàn)位段進(jìn)行對(duì)比,若兩者一致則判斷該幀數(shù)據(jù)校驗(yàn)正確,為有效數(shù)據(jù),并將經(jīng)過(guò)校驗(yàn)的正確數(shù)據(jù)存入FPGA內(nèi)RAM單元,DSP通過(guò)XINTF接口定時(shí)從FPGA內(nèi)部RAM讀取解析到的編碼器位置數(shù)據(jù),完成BiSS-B協(xié)議編碼器數(shù)據(jù)解碼;若兩者不一致則判斷校驗(yàn)錯(cuò)誤,將該幀數(shù)據(jù)丟棄,并對(duì)錯(cuò)誤次數(shù)進(jìn)行計(jì)數(shù),連續(xù)數(shù)次檢驗(yàn)到錯(cuò)誤數(shù)據(jù)則發(fā)出報(bào)警信號(hào)觸發(fā)DSP啟動(dòng)保護(hù)措施,防止電機(jī)飛車。
硬件電路框圖如圖2所示。
BiSS-B協(xié)議編碼器物理接口為RS422電平標(biāo)準(zhǔn),使用TI公司的高速全雙工RS485收發(fā)器SN65HVD77將FPGA的MA時(shí)鐘信號(hào)和SLO數(shù)據(jù)信號(hào)將電平轉(zhuǎn)換為兩組差分信號(hào)線,連接至BiSS協(xié)議編碼器。該收發(fā)器支持信號(hào)傳輸速率>50 Mbit/s,可涵蓋BiSS協(xié)議最高傳輸速率。接口電路圖如圖3所示。
解碼器軟件設(shè)計(jì)
軟件設(shè)計(jì)主要涉及通過(guò)FPGA完成對(duì)BiSS-B協(xié)議數(shù)據(jù)幀的解碼以及對(duì)解碼結(jié)果的校驗(yàn),以下從狀態(tài)機(jī)設(shè)計(jì)和CRC校驗(yàn)器設(shè)計(jì)兩方面進(jìn)行介紹。文中編碼器使用亨士樂(lè)公司的AD36-1213AF.0RBI型多圈絕對(duì)式編碼器。
2.1 狀態(tài)機(jī)設(shè)計(jì)
BiSS-B協(xié)議時(shí)序具有數(shù)據(jù)幀長(zhǎng)度不固定、數(shù)據(jù)幀信息復(fù)雜的特點(diǎn),狀態(tài)機(jī)是FPGA設(shè)計(jì)中常用的一種設(shè)計(jì)方法,基于狀態(tài)機(jī)的設(shè)計(jì)可大大提高設(shè)計(jì)的靈活性和通用性,因此文中設(shè)計(jì)了基于狀態(tài)機(jī)的BiSS-B協(xié)議時(shí)序解碼模塊。
根據(jù)圖1中BiSS-B協(xié)議時(shí)序,F(xiàn)PGA作為主設(shè)備,BiSS編碼器作為從設(shè)備,F(xiàn)PGA解碼模塊初始狀態(tài)為超時(shí)狀態(tài),應(yīng)將時(shí)鐘線MA狀態(tài)拉高,并確認(rèn)數(shù)據(jù)線SLO狀態(tài)為常高。當(dāng)超時(shí)狀態(tài)準(zhǔn)備就緒后,通過(guò)將時(shí)鐘線MA狀態(tài)拉低1個(gè)時(shí)鐘啟動(dòng)1次BiSS協(xié)議編碼器數(shù)據(jù)轉(zhuǎn)換,并將狀態(tài)機(jī)狀態(tài)切換為空閑狀態(tài),等待數(shù)據(jù)線SLO上從設(shè)備應(yīng)答響應(yīng)。正常情況下從設(shè)備將數(shù)據(jù)線SLO狀態(tài)拉低一段時(shí)間,狀態(tài)機(jī)將轉(zhuǎn)入應(yīng)答狀態(tài)。待從設(shè)備將數(shù)據(jù)線SLO狀態(tài)再次拉高時(shí),狀態(tài)機(jī)轉(zhuǎn)入開始狀態(tài),并檢測(cè)SLO高狀態(tài)時(shí)長(zhǎng),若時(shí)長(zhǎng)為1個(gè)MA時(shí)鐘則轉(zhuǎn)入讀取狀態(tài),否則將回到初始超時(shí)狀態(tài)。在讀取狀態(tài)中,將對(duì)數(shù)據(jù)線SLO上的數(shù)據(jù)進(jìn)行讀取,直到數(shù)據(jù)位數(shù)達(dá)到時(shí)序協(xié)議中規(guī)定的位數(shù),然后將時(shí)鐘線MA狀態(tài)拉高轉(zhuǎn)入超時(shí)狀態(tài),等待開始下一次循環(huán)。整個(gè)流程如圖4所示。
2.2 CRC校驗(yàn)?zāi)K設(shè)計(jì)
CRC校驗(yàn)全稱為循環(huán)冗余校驗(yàn),是一種常用于檢測(cè)通信協(xié)議或存儲(chǔ)設(shè)備中原始數(shù)據(jù)是否發(fā)生數(shù)據(jù)位意外變動(dòng)的錯(cuò)誤檢測(cè)算法[9]。其基本思想是對(duì)實(shí)際有用數(shù)據(jù)位按照一定的計(jì)算方法提取出對(duì)應(yīng)的唯一一組特征值,將特征值附加在有用數(shù)據(jù)后發(fā)送至數(shù)據(jù)接收端,接收端將讀取到的數(shù)據(jù)按照同樣的計(jì)算方法得到一組特征值,若兩組特征值一致則表示讀取數(shù)據(jù)有效。
CRC校驗(yàn)?zāi)K輸入數(shù)據(jù)從最高位開始逐位與CRC校驗(yàn)結(jié)果字段最高位bit5進(jìn)行異或運(yùn)算,異或結(jié)果作為CRC校驗(yàn)結(jié)果字段的最低位bit0,并同時(shí)與bit0異或,其結(jié)果作為bit1,其他bit位依次為低1 bit位移位結(jié)果。
按照上述方式,應(yīng)對(duì)AD36-1213AF.0RBI型編碼器的位置數(shù)據(jù)位、error位、Warn位和CRC校驗(yàn)位進(jìn)行CRC校驗(yàn),并將校驗(yàn)結(jié)果與CRC校驗(yàn)位進(jìn)行對(duì)比。使用Modelsim對(duì)CRC校驗(yàn)?zāi)K設(shè)計(jì)的合理性進(jìn)行驗(yàn)證。驗(yàn)證結(jié)果如圖6所示。
在圖6中,I_Rx_Data為33位經(jīng)BiSS時(shí)序解碼模塊提取的數(shù)據(jù),CRC_Result為CRC校驗(yàn)結(jié)果,連續(xù)3組CRC校驗(yàn)結(jié)果和對(duì)應(yīng)的三組輸入數(shù)據(jù)末6位CRC位一致,表明CRC校驗(yàn)正確。
3 實(shí)驗(yàn)驗(yàn)證
以EP4CE30型FPGA和TMS320F28335型DSP構(gòu)成的硬件電路為基礎(chǔ),對(duì)BiSS-B編碼器數(shù)據(jù)進(jìn)行了采集解析,圖7所示為FPGA端BiSS-B編碼器數(shù)據(jù)時(shí)序監(jiān)測(cè)結(jié)果,通道1為MA時(shí)鐘線波形,頻率為5 MHz,通道2為SLO數(shù)據(jù)線波形,由圖中可見完成1次數(shù)據(jù)解析時(shí)間約30 μs,可滿足至少20 kHz的編碼器數(shù)據(jù)采樣速率。
電機(jī)驅(qū)動(dòng)模塊速度環(huán)給定轉(zhuǎn)速為1 000 r/m,連續(xù)采樣多個(gè)周期的AD36-1213AF.0RBI型編碼器未經(jīng)濾波處理的原始數(shù)據(jù)并解析出對(duì)應(yīng)單圈和多圈位置數(shù)據(jù),如圖8所示。
編碼器單圈/多圈數(shù)據(jù)值分布情況如表1為所示。依據(jù)多個(gè)連續(xù)周期里編碼器數(shù)據(jù)計(jì)算出的平均轉(zhuǎn)速與給定轉(zhuǎn)速差異較小,可知編碼器數(shù)據(jù)值采樣正確,一致性較好。
采集速度環(huán)反饋轉(zhuǎn)速響應(yīng)曲線,如圖9所示。由圖中可見,使用BiSS編碼器作為位置傳感器時(shí)電機(jī)速度環(huán)響應(yīng)較快,超調(diào)量小于8%,穩(wěn)態(tài)誤差小于0.6%,具有較好的動(dòng)態(tài)和穩(wěn)態(tài)性能。驗(yàn)證了該BiSS解碼器設(shè)計(jì)的合理性。
4 結(jié)束語(yǔ)
通過(guò)對(duì)BiSS協(xié)議的分析基礎(chǔ)上,文中提出了BiSS協(xié)議編碼器解碼方案,通過(guò)實(shí)物試驗(yàn)驗(yàn)證了該方案的合理性,具有解析準(zhǔn)確、采樣速度快的特點(diǎn),對(duì)不同的BiSS協(xié)議具有適用性,適合應(yīng)用于BiSS協(xié)議編碼器數(shù)據(jù)解析場(chǎng)合中。
參考文獻(xiàn):
[1] 王列虎,皮佑國(guó).基于BISS協(xié)議的編碼器接口技術(shù)研究及應(yīng)用[J].機(jī)床與液壓,2011,39(8):121.
[2] 王希遠(yuǎn),成榮,朱煜,等.基于FPGA的BiSS-C協(xié)議編碼器接口技術(shù)研究及解碼實(shí)現(xiàn)[J].液晶與顯示,2016,31(4):386.
[3] 孫彥超.基于XMC4500的PMSM控制系統(tǒng)的設(shè)計(jì)[D].沈陽(yáng):沈陽(yáng)航空航天大學(xué),2016.
[4] Texas Instruments Incorporated.TMS320F2837xD Dual-Core Defiino Microcontrollers Technical Reference Manual[R/OL].https://www.ti.com.cn/product/cn/TMS320F2 8379D?keyMatch=TMS320F2837&tisearch=Search-CNeverything.
[5] 商懷昊,韓基鵬,肖鵬,等.基于BiSS-C協(xié)議的編碼器的接口技術(shù)研究及其在伺服驅(qū)動(dòng)系統(tǒng)中的應(yīng)用[J].工業(yè)技術(shù)創(chuàng)新,2014,1(2):211.
[6] 霍海龍.基于BiSS協(xié)議的編碼器及其在伺服驅(qū)動(dòng)系統(tǒng)中的應(yīng)用[J].電氣自動(dòng)化,2011,33(3):12.
[7] HENGSTLER.Technical Manual SSI_BiSS_ACURO_ en[R/OL].http://hengstler.com.cn/product/AD36.
[8] RENISHAW.biss_encoder_9709-9007-03-b(zh)[R/ OL].https://www.renishaw.com.cn/zh/resolute-encoderseries--37823
[9] 朱正鵬,朱旭鋒,李賓,等.一種位寬可變的CRC校驗(yàn)算法及硬件實(shí)現(xiàn)[J].航天控制,2019,37(2):42.