鄺俊澎,楊志軍,孫 晗,熊少旺,吳建成,李俊穎,賈 靜
(1.廣東工業(yè)大學(xué),廣東省微納加工技術(shù)與裝備重點實驗室,廣東廣州 510006;2.三英精控(天津)科技有限公司,天津 301700)
隨著時代的不斷發(fā)展,在高端數(shù)控機床、精密電子封裝設(shè)備和機器人等行業(yè),對定位精度和定位速度的要求越來越高[1-3],因此對位置反饋器件的性能要求越來越高。位置編碼器根據(jù)其工作方式可分為絕對式、增量式和混合式絕對編碼器3 種。由于絕對式編碼器由機械位置確定編碼而且無需找參考點,在抗干擾性和數(shù)據(jù)的可靠性方面得到很大提高。
位置編碼器作為伺服閉環(huán)控制中重要的反饋環(huán)節(jié),與主機的通信速度和對數(shù)據(jù)處理的速度是限制執(zhí)行機構(gòu)快速定位的另一大因素[4-5]。本文采用絕對式直線光柵尺,其通訊協(xié)議為BISS協(xié)議。在低端應(yīng)用場合中通常采用官方解碼芯片或者單片機,但由于受到專用芯片的擴展能力和單片機的數(shù)據(jù)處理能力的限制,使得在高端場合和多場景應(yīng)用顯得力有不逮[6]。而FPGA具有靈活性高、可移植性強的特點和快速處理數(shù)據(jù)的能力,綜合分析后最終采用FPGA實現(xiàn)BISS協(xié)議通訊。
本文介紹了BISS協(xié)議的數(shù)據(jù)結(jié)構(gòu),設(shè)計了該系統(tǒng)的硬件電路原理圖和所需的各個軟件模塊,實現(xiàn)了通訊接口和上位機的設(shè)計并將位置數(shù)據(jù)上傳至上位機顯示。
BISS是來自iC-Haus公司的開源協(xié)議[7-8],它適用于傳感器和執(zhí)行器的數(shù)字雙向串行接口,而且?guī)RC校驗功能保護數(shù)據(jù)傳送。與其他同類通訊協(xié)議相比,BISS協(xié)議在兼容性和網(wǎng)絡(luò)結(jié)構(gòu)方面更具有優(yōu)勢,高速性和時延與SSI相當(dāng)[9]。同時,BISS協(xié)議的數(shù)據(jù)長度可以根據(jù)實際情況做出修改,具有良好的擴展性。
BISS協(xié)議有傳感器模式(sensor mode)和寄存器模式(register mode)2種工作模式[10-11]。在傳感器模式中,光柵尺充當(dāng)從機,主機只需向從機發(fā)送位置請求即可快速獲取相關(guān)信息。而寄存器模式中,主機和光柵尺可以進行雙向讀寫操作來獲取相應(yīng)的信息。在傳感器模式下,其數(shù)據(jù)幀格式如圖1所示,首先是“Ack”響應(yīng)階段,緊接著是“Start”位和“0”位,之后的主體數(shù)據(jù)部分由若干位位置數(shù)據(jù)、1位錯誤位、1位警告位和6位CRC校驗碼組成,最后是超時結(jié)束階段“Timeout”。
圖1 BISS協(xié)議數(shù)據(jù)格式
具體的通信請求循環(huán)如下:
(1)空閑時,主機使MA時鐘線保持高電平而光柵尺使SLO線保持高電平表示已準(zhǔn)備就緒。
(2)請求位置采集時,主機開始傳輸MA時鐘脈沖。
(3)光柵尺在MA時鐘的第二個上升沿時將SLO線設(shè)為低電平作為響應(yīng)。
(4)完成 Ack 周期后,光柵尺將二進制格式的絕對位置數(shù)據(jù)傳輸?shù)脚c時鐘同步的主機。
(5)光柵尺傳送完所有數(shù)據(jù)后,主機停下時鐘并將MA線設(shè)置為高電平。
(6)如果光柵尚未準(zhǔn)備下一個位置請求周期,它會將SLO線設(shè)為低電平。
(7)當(dāng)光柵尺準(zhǔn)備進行下一請求周期時,它通過將SLO線設(shè)為高電平來提示主機。
硬件系統(tǒng)由FPGA(Cyclone Ⅳ系列EP4CE6E22C8)和絕對式光柵尺構(gòu)成,該絕對式光柵尺的通訊格式為RS485/RS422差分線驅(qū)動信號,最高通訊速率為10 Mbit/s。
信號處理的硬件電路如圖2所示,采用全雙工差分芯片SN75179B對RS485信號進行處理。該芯片具有一個接收器和一個驅(qū)動器,數(shù)據(jù)傳輸速率達到10 Mbit/s,滿足BISS協(xié)議最高數(shù)據(jù)傳輸要求。光柵尺通過DB9接口與主控板連接,F(xiàn)PGA發(fā)出的MA時鐘脈沖經(jīng)過轉(zhuǎn)換芯片由TTL電平轉(zhuǎn)為差分信號輸出給光柵尺。另一方面,光柵尺返回的SLO信號經(jīng)芯片處理后由差分信號轉(zhuǎn)為TTL電平輸入至FPGA。FPGA與上位機采用串口通信方式,F(xiàn)PGA將獲取的位置數(shù)據(jù)依次發(fā)送至上位機中,然后上位機將位置數(shù)據(jù)描點繪圖,顯示工作平臺的運動軌跡數(shù)據(jù)。
圖2 電平轉(zhuǎn)換電路
該數(shù)據(jù)采集系統(tǒng)如圖3所示,主要由鎖相環(huán)、MA時鐘控制器、SLO數(shù)據(jù)控制器、FIFO、UART控制器、光柵尺和上位機組成。其中鎖相環(huán)的作用是為了得到不同的MA時鐘頻率,然后根據(jù)實際需求設(shè)置所需的MA時鐘頻率。光柵尺接收到MA時鐘信號后返回當(dāng)前位置信息給FPGA,然后經(jīng)過一系列的數(shù)據(jù)處理,最后將結(jié)果傳輸至上位機顯示。
圖3 系統(tǒng)框圖
在FPGA數(shù)據(jù)處理部分中,其具體工作原理如圖4所示。FPGA通過key_en信號使能MA時鐘信號控制器開始工作,向光柵尺發(fā)送MA時鐘信號請求獲取當(dāng)前位置值。光柵尺接收到位置請求后,以同樣MA時鐘周期返回信息數(shù)據(jù)。
圖4 數(shù)據(jù)處理模塊示意圖
根據(jù)BISS協(xié)議的數(shù)據(jù)特點,將SLO數(shù)據(jù)控制接收數(shù)據(jù)的過程劃分為5個狀態(tài),該狀態(tài)機工作方式如圖5所示。開始時SLO數(shù)據(jù)控制器處于空閑狀態(tài)并且進入等待狀態(tài)等待光柵尺返回數(shù)據(jù)。當(dāng)SLO從高電平變成低電平時,狀態(tài)機進入應(yīng)答狀態(tài)等待Start位。當(dāng)接收到Start位后SLO數(shù)據(jù)控制器進入工作狀態(tài)開始接收數(shù)據(jù)。一般接收數(shù)據(jù)的做法是根據(jù)MA時鐘的上升沿讀取當(dāng)前SLO的電平狀態(tài),但是在實際電平轉(zhuǎn)換過程中,電平并不穩(wěn)定。因此僅僅根據(jù)MA時鐘上升沿讀取SLO引腳當(dāng)前電平值會存在接收錯誤的情況。而數(shù)據(jù)在傳輸過程中,一般來說數(shù)據(jù)的中間位置的電平狀態(tài)是最穩(wěn)定的。因此在接收狀態(tài)階段中,如圖6所示。其中sys_clk為系統(tǒng)時鐘,bps_cnt為一個MA時鐘周期對應(yīng)系統(tǒng)時鐘周期的數(shù)量,當(dāng)計數(shù)值等于bps_cnt一半時讀取數(shù)據(jù)即可獲得穩(wěn)定的電平值。接收完數(shù)據(jù)后,SLO控制器進入TIMEOUT狀態(tài)。當(dāng)SLO從低電平拉高后,SLO控制器重新進入空閑狀態(tài),如此循環(huán)工作。
圖5 數(shù)據(jù)接收狀態(tài)機
圖6 電平信號采集原理
SLO數(shù)據(jù)控制器接收完數(shù)據(jù)后向MA時鐘控制器和CRC校驗?zāi)K返回done_flag信號,并且將接收到的數(shù)據(jù)分為data_in和crc_check 2部分數(shù)據(jù)傳輸至下一級模塊中,其中data_in數(shù)據(jù)是接收到的位置值、錯誤位和警告位,而crc_check數(shù)據(jù)是接收到的CRC校驗碼。當(dāng)MA時鐘控制器接收到done_flag信號后停止MA時鐘,并且將MA信號拉高;當(dāng)CRC校驗?zāi)K接收到done_flag信號后,開始對data_in數(shù)據(jù)進行CRC校驗運算[12]。光柵尺的校驗字段為1000011。為了進一步提升數(shù)據(jù)處理的效率,充分發(fā)揮FPGA并行數(shù)據(jù)處理的優(yōu)勢。CRC校驗采用并行運算的算法[13-15],只需一個系統(tǒng)時鐘周期即可計算出CRC校驗碼,主要代碼如下:
crc_out[0]<=d[26]^d[25]^d[24]^d[20]^d[18]^d[17]^d[16]^d[15]^d[12]^d[10]^d[6]^d[5]^d[0]^c[2]^c[3]^c[4];
crc_out[1]<= d[27]^d[24]^d[21]^d[20]^d[19]^d[15]^d[13]^d[12]^d[11]^d[10]^d[7]^d[5]^d[1]^d[0]^c[2]^c[5];
crc_out[2]<= d[25]^d[22]^d[21]^d[20]^d[16]^d[14]^d[13]^d[12]^d[11]^d[8]^d[6]^d[2]^d[1]^c[0]^c[3];
crc_out[3]<= d[26]^d[23]^d[22]^d[21]^d[17]^d[15]^d[14]^d[13]^d[12]^d[9]^d[7]^d[3]^d[2]^c[0]^c[1]^c[4];
crc_out[4]<= d[27]^d[24]^d[23]^d[22]^d[18]^d[16]^d[15]^d[14]^d[13]^d[10]^d[8]^d[4]^d[3]^c[0]^c[1]^c[2]^c[5];
crc_out[5]<= d[25]^d[24]^d[23]^d[19]^d[17]^d[16]^d[15]^d[14]^d[11]^d[9]^d[5]^d[4]^c[1]^c[2]^c[3];
其中crc_out[5∶0]是CRC校驗?zāi)K對數(shù)據(jù)進行計算得出的校驗碼,d[27∶0]為校驗?zāi)K接收的data_in數(shù)據(jù),而c[5∶0]的值全為零,最后將計算得出的校驗碼與接收的crc_check校驗碼進行比對。如果二者一致,則crc_done信號輸出高電平脈沖,表示正確接收數(shù)據(jù),并將該數(shù)據(jù)傳輸至下一級處理單元;否則舍棄該數(shù)據(jù),并準(zhǔn)備發(fā)起下一次光柵位置請求。
由于光柵尺獲取位置數(shù)據(jù)的速度遠快于串口與上位機之間的通訊速度,因此會造成因數(shù)據(jù)傳輸速率不一致而導(dǎo)致數(shù)據(jù)丟失的情況。針對這種情況,在數(shù)據(jù)傳輸過程中設(shè)計了數(shù)據(jù)緩存塊。該數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)傳輸具有傳輸速率不一致、傳輸數(shù)據(jù)位寬不一致和數(shù)據(jù)傳輸?shù)捻樞虿蛔兊奶攸c。綜合比對各種緩存結(jié)構(gòu)的特點,最后采用FIFO存儲器作為數(shù)據(jù)緩存。FIFO一般用于不同時鐘域之間的數(shù)據(jù)傳輸,也常用來實現(xiàn)不同位寬接口的數(shù)據(jù)匹配。數(shù)據(jù)在傳送過程中需要滿足寄存器對建立與保持時間的要求,數(shù)據(jù)存在亞穩(wěn)態(tài)情況實現(xiàn)緩存功能,從而解決傳輸速率不一致的問題。
上位機開發(fā)利用的是基于圖形界面開發(fā)的MATLAB GUI工具箱,能夠快速開發(fā)實驗平臺原型。該工具箱集成了大量的常用模塊并且提供MATLAB函數(shù)庫接口,支持RS232/RS485串口通訊協(xié)議[16-17]。同時,MATIAB具有強大的繪圖功能和數(shù)據(jù)分析功能,非常適用于信號采集與信號分析。而且該工具箱能夠使程序轉(zhuǎn)換成exe文件,使其脫離MATLAB環(huán)境也能正常工作。
由于串口通信一次只能發(fā)送8位數(shù)據(jù),而光柵尺位置數(shù)據(jù)共26位。為了提高計算機尋址效率,F(xiàn)PGA將位置數(shù)據(jù)拆分為4組8位數(shù)據(jù)發(fā)送至上位機。上位機將接收到的4組數(shù)據(jù)進行拼接,然后進行十進制換算,最后根據(jù)轉(zhuǎn)換后的數(shù)據(jù)畫出圖表。
最后將整體設(shè)計好的各模塊通過ModelSim軟件進行仿真驗證,在測試文件中模擬光柵尺以10 Mbit/s的通訊速率向FPGA傳輸數(shù)據(jù)。本次測試中設(shè)置了2組數(shù)據(jù),如表1所示,其中第二組數(shù)據(jù)完全正確。由數(shù)據(jù)表可知,2組的位置狀態(tài)信息一致,但CRC校驗值最后一位不同。由此可以測試SLO數(shù)據(jù)控制器接收2組數(shù)據(jù)的位置狀態(tài)信息是否一致和CRC校驗?zāi)K能否正確工作,其整體測試結(jié)果如圖7所示。
表1 仿真數(shù)據(jù)表
由圖7可以看出,當(dāng)觸發(fā)信號key_en使能后,MA時鐘以10 MHz的頻率向光柵尺發(fā)出位置請求。測試文件模擬光柵尺發(fā)送數(shù)據(jù),當(dāng)接收完數(shù)據(jù)后MA時鐘停止工作并且保持高電平等待下次觸發(fā)。從波形圖數(shù)據(jù)分析得,SLO數(shù)據(jù)控制器正確接收2組的位置狀態(tài)信息和CRC校驗值。但因為第一組的CRC校驗值與事實不符,所以crc_done無高電平脈沖返回。而第二組數(shù)據(jù)crc_done返回高電平脈沖證明CRC校驗成功。由此得出設(shè)計的BISS接口通過高速通信仿真測試。
圖7 ModelSim仿真圖
將編寫好的程序下載到FPGA中,連接絕對式光柵尺。移動平臺到不同的位置,然后發(fā)出位置請求信號,通過Signal Tap Logic Analyzer捕獲FPGA內(nèi)部接收的信號如圖8所示。由圖8可知,當(dāng)FPGA發(fā)出位置請求后,MA時鐘信號開始工作;當(dāng)接收到完成標(biāo)志位后,MA時鐘停止工作并且保持高電平;之后將接收到的數(shù)據(jù)進行CRC校驗,crc_done信號產(chǎn)生高電平脈沖信號,證明接收的數(shù)據(jù)正確。由此可見,該波形圖符合BISS協(xié)議理論時序圖,其數(shù)據(jù)處理模塊能夠正常穩(wěn)定工作。
圖8 Signal Tap數(shù)據(jù)捕獲
通過等間距地驅(qū)動平臺并且向光柵尺發(fā)送位置請求信號,F(xiàn)PGA將接收到的光柵尺位置信息經(jīng)過校驗后上傳至上位機顯示,如圖9所示。從圖9可以看出,上位機能夠正確接收光柵尺的位置數(shù)據(jù)并將其描繪成圖表。
圖9 上位機數(shù)據(jù)顯示示意圖
本文根據(jù)BISS通訊協(xié)議設(shè)計了硬件電路和解碼模塊以實現(xiàn)絕對式光柵尺數(shù)據(jù)采集并且設(shè)計了上位機顯示光柵尺數(shù)據(jù)。以FPGA為核心的數(shù)據(jù)采集系統(tǒng),節(jié)省了外圍電路的空間,而且移植性和擴展性好,具有一定的通用性。為了充分發(fā)揮FPGA強大的數(shù)據(jù)處理能力和靈活性,加入了并行CRC校驗運算,縮短了工作周期。實驗結(jié)果表明,該數(shù)據(jù)采集系統(tǒng)能夠以10 Mbit/s的通信速率準(zhǔn)確接收光柵尺數(shù)據(jù),并且解碼后將其傳輸給上位機反映平臺運動信息。