陶俊豪
( 中國人民解放軍63801部隊(duì),四川 西昌 615042 )
高速直線電機(jī)是一種將電能轉(zhuǎn)換為高速直線運(yùn)動(dòng)機(jī)械能的傳動(dòng)裝置,常用于高性能機(jī)床伺服系統(tǒng)、電磁推進(jìn)器或磁懸浮定位平臺(tái)上,控制精度可達(dá)μm量級(jí),移動(dòng)速度可達(dá)20m/s以上。在實(shí)際應(yīng)用中,對(duì)直線電機(jī)進(jìn)行機(jī)械性能檢測,一般需要用光柵尺或磁柵尺對(duì)其位置進(jìn)行編碼,檢測相對(duì)位置、速度、加速度等信息。此外,為了解電機(jī)的電性能,還需要測試相應(yīng)位置的動(dòng)態(tài)電壓、電流等參數(shù)。由于電機(jī)運(yùn)動(dòng)速度較快,產(chǎn)生的正交編碼、電參數(shù)數(shù)據(jù)量較大,需要在μs量級(jí)時(shí)間內(nèi)進(jìn)行快速數(shù)據(jù)采集與AD轉(zhuǎn)換等,傳統(tǒng)的單片機(jī)檢測技術(shù)不再適用于電機(jī)測試與控制。
FPGA(Field-Programmable Gate Array)處理速度高達(dá)數(shù)百兆以上,具有高度靈活、可定制化特點(diǎn),在高速實(shí)時(shí)信號(hào)處理系統(tǒng)中得到了廣泛應(yīng)用。本文以一種高壓(220V工作)、高速直線電機(jī)測試儀器的設(shè)計(jì)為出發(fā)點(diǎn),利用FPGA技術(shù)對(duì)其具體內(nèi)容進(jìn)行了研究與實(shí)現(xiàn),重點(diǎn)研究其在電機(jī)速度、電機(jī)電壓、電流檢測方面的應(yīng)用。
直線電機(jī)的位置檢測一般采用無接觸式光柵尺或磁柵尺技術(shù)實(shí)現(xiàn),兩者差別在于測試精度和行程。由于本文的出發(fā)點(diǎn)是測試一種行程20mm直線電機(jī)的最大運(yùn)動(dòng)速度,精度要求不高,故采用低成本磁柵檢測技術(shù)。磁柵尺選用上海平信機(jī)電制造有限公司的MR502C型磁柵尺,5V單電源供電,分辨率25μm,移動(dòng)速度達(dá)25m/s,輸出信號(hào)包含A、B、Z三路正交編碼的差分信號(hào)。對(duì)正交編碼器輸出信號(hào)進(jìn)行解調(diào)和計(jì)數(shù)的專用集成電路,如惠普公司 HCTL2000、HCT2016等產(chǎn)品不僅結(jié)構(gòu)復(fù)雜,而且價(jià)格昂貴。采用FPGA技術(shù)較易實(shí)現(xiàn)濾波、解碼、加減計(jì)數(shù)以及方向判別等功能,與外周電路連接便捷。在差分信號(hào)輸入FPGA前需將其轉(zhuǎn)換為CMOS或TTL電平以實(shí)現(xiàn)接口匹配。
高壓電機(jī)的工作電壓、電流采集利用高速隔離型16位ADC芯片AD7401實(shí)現(xiàn),采用隔離式ADC不僅能消除電機(jī)運(yùn)動(dòng)帶來的干擾,也能防止意外情況下電機(jī)高壓信號(hào)串入FPGA低壓信號(hào)采集處理電路,同時(shí)提高人員操作安全性。AD7401是Analog Devices公司推出的一款隔離式Sigma-Delta調(diào)制器,在20MHz外同步時(shí)鐘情況下可輸出16位隔離的無失真采樣數(shù)據(jù)流,該數(shù)據(jù)流經(jīng)FPGA進(jìn)行Sinc3濾波后解碼還原得到ADC數(shù)據(jù)。由于采集隔離供電,該芯片需要搭配隔離DC/DC電源模塊供電。
在獲取電機(jī)的正交編碼和電壓、電流等參數(shù)后,需將數(shù)據(jù)上傳至上位機(jī)作處理,從而對(duì)電機(jī)綜合性能進(jìn)行分析。普通的串口傳輸技術(shù)波特率最高達(dá)1Mbps,傳輸速度慢,不適合高速數(shù)據(jù)采集處理;基于USB的傳輸技術(shù)雖然傳輸速度高達(dá)480Mbps,但接口傳輸復(fù)雜,數(shù)據(jù)在長距離傳輸中不可靠。本文采用基于千兆網(wǎng)絡(luò)傳輸技術(shù),傳輸速度高達(dá)1Gbps,接口簡單,傳輸距離長,采用TCP技術(shù)后能保證可靠傳輸。
基于上述考慮,采用Xilinx公司推出的可擴(kuò)展處理器平臺(tái)架構(gòu)ZYNQ7010芯片,該芯片將雙核 ARM Cortex?-A9 處理器和 FPGA 可編程邏輯單元集成在一顆單芯片中,構(gòu)成PS(Processing System)加 PL(Programmable Logic)的單芯片 SoC 解決方案。整個(gè)系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
由于高速電機(jī)在測試過程中產(chǎn)生大量數(shù)據(jù),芯片自帶的256K SRAM無法滿足數(shù)據(jù)存儲(chǔ)及傳輸要求,故使用DDR進(jìn)行數(shù)據(jù)存儲(chǔ)及傳輸。
由于電機(jī)工作時(shí)通常產(chǎn)生大量噪聲,因此在進(jìn)行解碼前需對(duì)采集到的正交信號(hào)進(jìn)行濾波,以消除噪聲干擾。在對(duì)磁柵尺輸出的正交差分信號(hào)進(jìn)行電平轉(zhuǎn)換后,可采用數(shù)字濾波器進(jìn)行噪聲濾除。該濾波器由D觸發(fā)器、JK觸發(fā)器、三輸入與門、與非門等邏輯門組成,可濾除頻率大于時(shí)鐘頻率的雜波信號(hào),數(shù)字濾波器及仿真波形如圖2所示。
圖2 數(shù)字濾波器及仿真波形
正交信號(hào)的解碼由鑒相、四倍頻、正反向計(jì)數(shù)等單元組成,其實(shí)現(xiàn)方式和仿真結(jié)果如圖3所示。
圖3 正交信號(hào)解碼實(shí)現(xiàn)及仿真結(jié)果
鑒相用于判斷電機(jī)前進(jìn)方向,四倍頻單元在正交信號(hào)的每個(gè)邊沿進(jìn)行計(jì)數(shù)因而頻率是正交信號(hào)頻率的四倍,該信號(hào)作為脈沖計(jì)數(shù)的依據(jù)。由于正交信號(hào)每個(gè)脈沖對(duì)應(yīng)距離是固定的,故對(duì)四倍頻信號(hào)根據(jù)方向進(jìn)行計(jì)數(shù)可知電機(jī)所處位置。采用32位寄存器存儲(chǔ)相對(duì)時(shí)間以及解碼器計(jì)數(shù)值,電機(jī)運(yùn)行時(shí)以第一個(gè)四倍頻信號(hào)AB0上升沿作為時(shí)間的零點(diǎn),在每個(gè)正交信號(hào)跳變沿記錄相對(duì)時(shí)間和解碼器計(jì)數(shù)值(表示相對(duì)位置),根據(jù)參數(shù)計(jì)算出電機(jī)速度和加速度等信息。
時(shí)間寄存器以1MHz的時(shí)鐘進(jìn)行同步計(jì)數(shù),保證時(shí)間精度在1μs級(jí)別,提高速度計(jì)算精度。解碼器計(jì)數(shù)值寄存器用最高位來表示運(yùn)動(dòng)方向信息,便于后續(xù)客戶端解算。
上述單元實(shí)現(xiàn)了正交信號(hào)的解碼,但是在多次重復(fù)測試過程中正交計(jì)數(shù)器不能歸零,相對(duì)時(shí)間寄存器也有溢出可能,為此需設(shè)計(jì)自復(fù)位邏輯電路,結(jié)構(gòu)如圖4所示。從第一次收到四倍頻信號(hào)作為相對(duì)時(shí)刻0,從相對(duì)時(shí)刻0開始計(jì)算時(shí)間,超過規(guī)定時(shí)間對(duì)計(jì)數(shù)器及狀態(tài)機(jī)進(jìn)行復(fù)位,確保脈沖計(jì)數(shù)及相對(duì)時(shí)間的正確性。假設(shè)電機(jī)單次測試往復(fù)運(yùn)動(dòng)時(shí)間為100ms,可將復(fù)位時(shí)間設(shè)計(jì)為100ms以上。復(fù)位脈沖同時(shí)作為中斷信號(hào)傳遞給處理器,表示數(shù)據(jù)采集完成。
圖4 復(fù)位流程圖
采樣電路經(jīng)AD7401輸出至PL數(shù)據(jù)是經(jīng)二階sigma-delta (Σ-Δ)調(diào)制器調(diào)制的1位二進(jìn)制數(shù)據(jù)流,需要合適的數(shù)字濾波器重建AD轉(zhuǎn)換得到數(shù)值。這里采用一個(gè)Sinc3濾波器,濾波器的結(jié)構(gòu)如圖5所示。其中累加器采用遞歸型結(jié)構(gòu),以調(diào)制器時(shí)鐘MCLKIN速度執(zhí)行累加,實(shí)現(xiàn)IIR(遞歸型濾波器),同時(shí)利用計(jì)數(shù)器對(duì)MCLKIN進(jìn)行256分頻得到WORDCLK,該時(shí)鐘速率也是AD轉(zhuǎn)換器輸出采樣結(jié)果(16位)速率。WORDCLK提供至微分器以實(shí)現(xiàn)FIR(非遞歸型濾波器),即有限長單位沖激響應(yīng)濾波器。WORDCLK同時(shí)驅(qū)動(dòng)Sinc數(shù)據(jù)至16位輸出寄存器。該16位采樣數(shù)據(jù)在客戶端電腦完成電壓和電流數(shù)據(jù)解析。
圖5 Sinc3濾波器
ZYNQ7010中PS與PL獨(dú)立,無法直連進(jìn)行數(shù)據(jù)通信,需要接口轉(zhuǎn)換,故對(duì)其接口和通信模式進(jìn)行了研究,最終通信模式如圖6所示。AD轉(zhuǎn)換后得到的電壓電流數(shù)據(jù)和正交數(shù)據(jù)在ZYNQ7010的PL部分處理,可用vivado軟件將其封裝為基于AXI4總線的IP核,并對(duì)測試數(shù)據(jù)進(jìn)行編碼,以便與PS部分通信。
圖6 PL與PS接口通信模式圖
在PL端,IP核時(shí)鐘由PS提供,涉及兩個(gè)時(shí)鐘,F(xiàn)CLK_CLK0供給S_AXI_HP0總線使用,F(xiàn)CLK_CLK1給PL端正交解碼、AD采集數(shù)據(jù)使用。PL接收PS通過EMIO擴(kuò)展接口發(fā)出的控制信號(hào),包括控制電機(jī)測試開始與停止信號(hào)。電機(jī)測試過程中,由于傳輸數(shù)量線寬(128位)與AXI4總線線寬(32位)不一致,因此需要使用FIFO進(jìn)行不同時(shí)鐘域的數(shù)據(jù)緩存。IP核將FIFO編碼數(shù)據(jù)通過AXI4 FULL總線傳入CPU的S_AXI_HP0高速AXI總線,存入DDR指定位置。由于測試的數(shù)據(jù)量大且具有不確定性,為簡化邏輯實(shí)現(xiàn),測試完成后需將測試得到的數(shù)據(jù)量寫入BRAM,便于CPU進(jìn)行讀取處理。PL解碼器自復(fù)位信號(hào)通過中斷接口IRQ_F2P向CPU發(fā)出中斷請(qǐng)求,表征電機(jī)測試數(shù)據(jù)輸入DDR與BRAM完成,同時(shí)將PL部分中的解碼計(jì)數(shù)器清零。
在PS端,SDK軟件移植FreeRTOS開源實(shí)時(shí)操作系統(tǒng),為實(shí)現(xiàn)可靠的網(wǎng)絡(luò)數(shù)據(jù)傳輸,移植了FreeRTOS+ TCP協(xié)議棧。操作系統(tǒng)運(yùn)行后,初始化TCP協(xié)議棧及中斷入口,生成兩個(gè)任務(wù):其一負(fù)責(zé)啟停PL端電機(jī)測試、處理中斷,通過M_AXI_GP0端口讀取BRAM數(shù)值決定網(wǎng)絡(luò)數(shù)據(jù)發(fā)送量,其二負(fù)責(zé)測試數(shù)據(jù)的網(wǎng)絡(luò)傳輸,從DDR中讀取BRAM指定大小的測試數(shù)據(jù),采用基于TCP協(xié)議的服務(wù)器模式通過MAC控制器傳輸至千兆網(wǎng),傳輸完成或超時(shí)后告知第一任務(wù),以進(jìn)行下一個(gè)測試。操作系統(tǒng)中需考慮意外導(dǎo)致TCP協(xié)議棧崩潰情況,一般在TCP服務(wù)器端網(wǎng)絡(luò)傳輸任務(wù)中加入響應(yīng)客戶端重啟ZYNQ7010指令函數(shù)。
在PC端,編寫TCP通訊客戶端,實(shí)時(shí)接收TCP數(shù)據(jù)包,運(yùn)用多線程技術(shù)完成數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)。由于測試數(shù)據(jù)量較大,實(shí)時(shí)解算編碼數(shù)據(jù)容易造成網(wǎng)絡(luò)通訊緩慢,不利于實(shí)時(shí)檢測,因此在所有測試完畢后再進(jìn)行數(shù)據(jù)解算和處理,得到電機(jī)相關(guān)參數(shù)。
在使用微相科技的MZ7010評(píng)估板基礎(chǔ)上另行設(shè)計(jì)接口板,完成電壓電流采集電路、正交編碼器電平轉(zhuǎn)換等功能,編寫基于MFC的客戶端程序,進(jìn)行電機(jī)測試工作,實(shí)現(xiàn)了預(yù)期效果。