陽志林,楊志軍,柯幫維,鄧亞雄
(1.廣東工業(yè)大學,精密電子制造技術與裝備國家重點實驗室,廣東廣州 510006;2.佛山市華道超精科技有限公司,廣東佛山 528225)
隨著集成電路制造、精密電子封裝等領域的快速發(fā)展,該行業(yè)對高速、超精密定位運動平臺的需求越來越高[1-2],同時對平臺的電機伺服控制也要求越高。單回路控制已不能滿足部分超精密運動平臺的需求,如傳統(tǒng)大行程宏微復合平臺以雙驅動宏微切換滿足宏和微的定位控制[3]、剛柔耦合平臺用以微帶宏單驅動雙反饋控制獲取柔性鉸鏈彈性變形來補償摩擦死區(qū),需要對電機編碼器和平臺光柵尺的同步采集才能滿足控制要求[4-5]。
絕對式多摩川協(xié)議和BISS協(xié)議都有著抗干擾能力強、通信速率高等優(yōu)點,在位置傳感器領域得到廣泛的應用[6]。電機伺服系統(tǒng)通常以ARM或DSP為計算核心,對獲取的位置反饋做閉環(huán)運算。但單獨用ARM實現(xiàn)對編碼器和光柵尺的雙反饋采樣會因MCU串行執(zhí)行而出現(xiàn)采樣延時,不能獲取它們同一時刻位置信息。故可利用FPGA并行性、快速性的特點對多編碼器并行實時采樣,滿足系統(tǒng)雙回路控制的需求[7]。
本文介紹了多摩川和BISS協(xié)議的數(shù)據(jù)結構,以同時采集剛柔耦合滾珠絲桿平臺的電機編碼器和平臺光柵尺為背景,設計了該采集裝置的通訊接口電路和軟件模塊,并設計上位機顯示平臺的位移。
FPGA基于多摩川協(xié)議和BISS協(xié)議設計解碼模塊,分別對電機絕對式編碼器和絕對式直線光柵尺進行同步采集。同時FPGA還需要通過FMC總線完成與ARM之間的數(shù)據(jù)傳輸。
多摩川協(xié)議采用“一問一答”的通訊方式[8],在讀取編碼器模式下,以波特率為2.5 Mbit/s,按照協(xié)議的時序細節(jié)、通信指令、數(shù)據(jù)格式進行異步串行通信。每次需向編碼器發(fā)送位置請求命令,編碼器接收無誤后按照協(xié)議格式返回對應信息,完成一次數(shù)據(jù)交換。
1.1.1 向編碼器發(fā)送控制命令
FPGA向編碼器發(fā)送一個控制命令字段CF作為讀取位置請求信號??刂谱侄螛嫵扇鐖D1所示。
圖1 控制字段數(shù)據(jù)組成
字段含有串口通訊固定的起始位、引導碼、4位數(shù)據(jù)ID碼、校驗位、停止位,改變4位數(shù)據(jù)ID碼可對應不同的命令字段。編碼器根據(jù)接收的不同命令返回不同的數(shù)據(jù),在不包含起始停止位的情況下,常用的控制命令從高位到低位的命令如下:單圈值命令ID1(00000010);多圈值加單圈值為ID3(00011010)。本文以使用ID3控制命令為主,對返回的位置信息提取多圈和單圈值。
1.1.2 接收編碼器應答數(shù)據(jù)
編碼器接受到FPGA發(fā)送的CF字節(jié)后,經(jīng)過大概3 μs開始按照協(xié)議數(shù)據(jù)格式串行返回信息。返回數(shù)據(jù)格式如圖2所示,首先原樣返回第1個接收到的CF字段。
圖2 編碼器返回數(shù)據(jù)組成
第2個為狀態(tài)字段SF,包含編碼器的狀態(tài)信息,判斷編碼器工作狀態(tài)是否正常。
DF0至DF7為數(shù)據(jù)字段,根據(jù)發(fā)送的CF控制字段不同,返回不同的位置信息數(shù)據(jù)。如發(fā)送CF為ID3,則DF0~DF2為單圈值信息,DF4~DF6為多圈值信息。
CRC為校驗字段,對從CF到DF7字段進行校驗,用于檢測接收的數(shù)據(jù)是否出錯。采用CRC-8校驗算法,生成8個bit的校驗碼,校驗多項式對應校驗字段為100000001。
BISS 協(xié)議是一種全雙工同步串行總線通信協(xié)議,能滿足實時、雙向、高速的傳感器通信[9]。目前通信協(xié)議版本為BISS-C,帶有CRC校驗功能,可保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
BISS-C協(xié)議根據(jù)工作模式可分為寄存器模式和傳感器模式。雖然傳感器模式相對寄存器模式獲取的狀態(tài)信息少,但是具有更高的位置采樣頻率[10]。傳感器模式下控制器作為主機向從機光柵尺發(fā)送頻率為5 MHz的MA時鐘作為位置請求,就能快速獲取相應的信息。協(xié)議返回數(shù)據(jù)結構及時序如圖3所示。
圖3 BISS-C協(xié)議數(shù)據(jù)格式
MA是由主機FPGA發(fā)送至從機光柵尺的時鐘,空閑時為高電平,開始采集數(shù)據(jù)才發(fā)送時鐘。SLO為數(shù)據(jù)信號,空閑時為高電平,由從機將數(shù)據(jù)發(fā)送給主機。
開始采集數(shù)據(jù)時,當從機接受到MA時鐘第2個上升沿時,將SLO信號拉低,代表進入ACK應答狀態(tài)。
等待從機信號將SLO再次拉高,進入下一個開始Start狀態(tài)。
此時光柵尺開始將位置信息通過二進制傳輸,第1位為0位,隨后Position為32 bit位置信息,Error位為1 bit、Warn位1 bit、CRC校驗位6 bit。隨后將MA時鐘信號拉高進入超時Timeout狀態(tài),等待下一次讀取時鐘的到來。
所有數(shù)據(jù)接收完成后,對32 bit位置數(shù)據(jù),1位錯誤位,1位警告位共34 bit進行校驗。本次實現(xiàn)的BISS-C的CRC校驗多項式為1000011。
FMC是一種總線通信,該總線稱為靈活存儲控制器(flexible memory controller),是STM32針對各種存儲器外設推出的一種總線控制器,可以配置多種存儲器接口用來通信,根據(jù)需求設置傳輸?shù)臄?shù)據(jù)位寬,是一種并行通訊[11]。其相對于串行通信,極大地提高了傳輸速度。
總線控制的存儲器類型可以是NOR/PSRAM、SRAM、SDRAM等。因此可以把FPGA看作是ARM的一塊外接SRAM型存儲器,用對SRAM的讀寫方式從而對FPGA進行讀寫操作[12]。通過片選信號CS選中存儲器,其對應FMC控制SRAM存儲區(qū)地址如圖4所示。
圖4 FMC存儲塊SRAM地址映像
通信選用16位地址線A0~A15和數(shù)據(jù)線D0~D15,讀使能RD和寫使能WR信號。FMC外設支持輸出多種不同的時序以便控制不同的存儲器,共有4種模式(A、B、C、D),選用A模式對FPGA進行讀操作,圖5為FMC讀時序。
圖5 FMC模式A讀時序
硬件系統(tǒng)由ARM(STM32H743)和FPGA(EP4CE6E22C8)、伺服電機編碼器、平臺絕對式光柵尺構成。硬件電路設計主要包括2部分:FPGA與多摩川絕對式編碼器及絕對式光柵尺的電氣連接;FPGA與ARM控制器之間的電氣連接。
FPGA與編碼器多摩川協(xié)議通訊和光柵尺的BISS協(xié)議通訊均為RS485差分線信號驅動。多摩川協(xié)議為異步串口通信的方式,只需要對數(shù)據(jù)線差分。而BISS協(xié)議為同步時鐘通信,需要對時鐘線MA和數(shù)據(jù)線SLO差分。因此采用3個差分芯片SP3485對RS485信號處理。該SP3485芯片的接收與發(fā)送通過RE和DR引腳控制。對RE與DE引腳共接,當共接為低電平,芯片處于接收狀態(tài),高電平時為發(fā)送狀態(tài)。FPGA通過2個DB9接口與編碼器和光柵尺連接,數(shù)據(jù)傳輸速率可達到10 Mbit/s,滿足多摩川和BISS協(xié)議的通信速率傳輸要求。電路采集接口原理圖如圖6所示。而ARM與FPGA之間的FMC總線通訊使用線連接相關IO引腳即可。
圖6 采集接口電路圖
雙反饋數(shù)據(jù)采集裝置內(nèi)部系統(tǒng)框圖如圖7所示,主要由FPGA實現(xiàn)對編碼器和光柵尺的解碼讀取及校驗,再通過FMC總線傳輸數(shù)據(jù)至ARM,最后數(shù)據(jù)通過上位機顯示。
圖7 系統(tǒng)模塊框圖
產(chǎn)生80 μs一次的sys_sync采樣使能信號,開始對編碼器和光柵尺采樣。
3.2.1 串口發(fā)送
接收到采樣使能信號,開始發(fā)送CF控制字段,如多圈值獲取命令ID3。通信波特率為2.5 MHz,即一個控制字段發(fā)送完成需要4 μs。
3.2.2 串口接收
發(fā)送完成等待3 μs左右,編碼器會以同樣波特率開始返回數(shù)據(jù)。按位接收包含起始停止位共110 bit數(shù)據(jù)完成后,去掉起始停止位后將接收數(shù)據(jù)給CRC模塊校驗,并等待下次接收開始。
3.2.3 CRC校驗
多摩川協(xié)議CRC對應校驗字段10000001。采用并行CRC校驗在一個時鐘周期生成8個位數(shù)的校驗碼,與接收的CRC校驗字段進行對比[13-14]。
crc_out[0]=d[72]^d[64]^d[56]^d[48]^d[40]^
d[32]^d[24]^d[16]^d[8]^d[0]^c[0];
crc_out[1]=d[73]^d[65]^d[57]^d[49]^d[41]^
d[33]^d[25]^d[17]^d[9]^d[1]^c[1];
crc_out[2]=d[74]^d[66]^d[58]^d[50]^d[42]^
d[34]^d[26]^d[18]^d[10]^d[2]^c[2];
crc_out[3]=d[75]^d[67]^d[59]^d[51]^d[43]^
d[35]^d[27]^d[19]^d[11]^d[3]^c[3];
crc_out[4]=d[76]^d[68]^d[60]^d[52]^d[44]^
d[36]^d[28]^d[20]^d[12]^d[4]^c[4];
crc_out[5]=d[77]^d[69]^d[61]^d[53]^d[45]^
d[37]^d[29]^d[21]^d[13]^d[5]^c[5];
crc_out[6]=d[78]^d[70]^d[62]^d[54]^d[46]^
d[38]^d[30]^d[22]^d[14]^d[6]^c[6];
crc_out[7]=d[79]^d[71]^d[63]^d[55]^d[47]^
d[39]^d[31]^d[23]^d[15]^d[7]^c[7];
d[79:0]為校驗的前10個字節(jié),c[7:0]初始值為0,crc_out為并行計算的校驗結果。將crc_out與接收的CRC字節(jié)對比,兩者相等則代表數(shù)據(jù)正確,此時提取單圈值和多圈值有效位數(shù)拼接成32 bit位置數(shù)據(jù)。否則代表接收錯誤,將接收數(shù)據(jù)丟棄,等待下次重新采樣。正確結果傳至FMC模塊等待ARM的讀取。
3.3.1 MA時鐘控制
為了確保雙反饋位置采樣的同步性,即盡可能保證編碼器和光柵尺同一時刻接受到采集請求。因編碼器是在采樣時能信號后4 μs,才接收完控制字段開始準備數(shù)據(jù)。光柵尺是在接收到2個MA時鐘上升沿才進入應答準備數(shù)據(jù),而1個MA時鐘周期200 ns。因此MA時鐘模塊接受到同步采樣使能信號之后,延遲3.6 μs開始發(fā)送MA時鐘。
3.3.2 SLO接收
SLO信號由光柵尺發(fā)送至FPGA,根據(jù)BISS協(xié)議時序特點,采用狀態(tài)機的方式讀取SLO信號,將接收分為5個過程,如圖8所示。在MA上升沿跳變狀態(tài)機,MA的下降沿讀取SLO信號。第1次讀取由INIT初始化狀態(tài)進入IDLE空閑狀態(tài),等待SLO拉低后進入ACK應答狀態(tài),待SLO重新拉高表示Start位,即開始計數(shù)進入工作接收狀態(tài),包含0位在內(nèi),完成接收后進入“TIMEOUT”狀態(tài),等待SLO從低變到高電平,即重新進入到空閑狀態(tài)。
圖8 SLO數(shù)據(jù)接收狀態(tài)機
3.3.3 CRC
當數(shù)據(jù)接收完成,對位置信息和Error位和Warn位共34 bit按校驗字段1000011生成6 bit校驗碼。計算生成的校驗碼與對光柵尺接收的校驗碼進行比對,數(shù)據(jù)一致時代表接收正確,保存有效位置信息,校驗原理與多摩川模塊校驗類似。否則丟棄數(shù)據(jù),等待下一次的位置讀取。
將讀取的編碼器和光柵尺的數(shù)據(jù)都按32 bit組成,其中多摩川位置按高9位為多圈值,低23位為單圈值拼接。光柵尺32 bit則全是位置信息,將位置信息存儲在相應的寄存器中,等待ARM的讀取。
可利用STM32CubeMX配置串口功能與上位機通信、FMC功能實現(xiàn)與FPGA的通信、定時器功能每80 μs發(fā)送一次讀取命令獲取FPGA存儲的雙反饋位置信息。
上位機開發(fā)是基于MatlabGUI工具箱的圖形界面。該GUI工具箱含有串口通訊相關函數(shù)模塊可調(diào)用[15]。同時MATLAB具有強大的數(shù)據(jù)分析和繪圖的功能,適用于信號的數(shù)據(jù)處理與分析。在內(nèi)部定義與ARM的通訊格式,ARM將2個32 bit的位置反饋數(shù)據(jù)分8個字節(jié)傳輸給上位機,上位機對數(shù)據(jù)提取組合后顯示并圖形繪制。該工具箱也能使設計的界面程序轉換成exe軟件,脫離MATLAB依然能夠使用,非常便捷。
將FPGA軟件模塊程序編譯下載,移動平臺位置,通過Signal Tap Logic Analyzer捕獲FPGA內(nèi)部編碼器和光柵尺相關信號數(shù)據(jù),如圖9所示。
由于多摩川協(xié)議讀取和BISS協(xié)議讀取返回時間不一致,信號分析圖截取多摩川協(xié)議讀取為例。sys_sync拉高為代表開始發(fā)送讀請求,當接收編碼器的校驗碼crc_check[7∶0]和FPGA計算校驗出的crc_out[7:0]相等時,則接收數(shù)據(jù)正確,產(chǎn)生crc_done信號。對數(shù)據(jù)進行更新,取多圈的9 bit和單圈的23 bit傳輸給FMC模塊tama_fdb[31∶0]。同理光柵尺的位置數(shù)據(jù)為Biss_fdb[31∶0]。由圖9可見數(shù)據(jù)接收模塊能夠正常工作,符合軟件設計初衷。
由于編碼器和光柵尺分辨率不一樣,為直觀獲取滾珠絲桿平臺雙反饋相對位移,將反饋數(shù)據(jù)均換成nm單位顯示。Pos_init代表以當前位置為零點,pos_fdb1為平臺移動時多摩川編碼器相對脈沖差值,由于電機轉一圈滾珠絲桿移動10 mm,即一個脈沖代表107/223(nm/count)。Pos_fdb2為光柵尺相對差值脈沖,分辨率本身就為1 nm/count,不需換算。將轉動滾珠絲桿一圈,對應的Signal Tap圖捕獲位置數(shù)據(jù)轉換成nm單位由上位機顯示,如圖10所示??梢姄Q算數(shù)據(jù)正確,該雙反饋采集裝置能夠正確采集數(shù)據(jù)傳送至ARM并由上位機顯示位移圖形。
本文根據(jù)多摩川協(xié)議和BISS協(xié)議基于FPGA設計了硬件接口電路和解碼模塊,實現(xiàn)對編碼器和光柵尺的同步讀取。滿足裝置雙反饋采樣的同時加入并行CRC校驗,對采樣數(shù)據(jù)能快速校驗,保證數(shù)據(jù)反饋的可靠性。采樣數(shù)據(jù)通過FMC總線并行傳輸至ARM,可用于伺服系統(tǒng)的閉環(huán)運算。且以FPGA為核心的采集模塊具有良好的拓展性和移植性,對未來不同平臺的雙反饋協(xié)議可靈活搭配。實驗結果表明:該雙反饋數(shù)據(jù)采集裝置能夠快速準確采集編碼器和光柵尺數(shù)據(jù),解碼后數(shù)據(jù)傳輸給上位機統(tǒng)一成納米顯示,能直觀反映平臺的運動信息。