員天佑, 謝 閱
(中國工程物理研究院計算機(jī)應(yīng)用研究所,四川綿陽 621900)
隨著電子技術(shù)和計算機(jī)控制技術(shù)的發(fā)展,步進(jìn)電機(jī)所具有的控制方便、定位準(zhǔn)確的特點得到充分發(fā)揮,成為運動控制系統(tǒng)的重要執(zhí)行部件,而對步進(jìn)電機(jī)控制器、驅(qū)動器及控制技術(shù)的研究也成了熱門課題。目前,步進(jìn)電機(jī)控制系統(tǒng)以微控制器、驅(qū)動器和微控制器、FPGA、驅(qū)動器兩種結(jié)構(gòu)最為典型,其工作過程完全受軟件控制,在控制精度、工作效率和系統(tǒng)抗干擾性方面有所限制,且普遍不具備網(wǎng)絡(luò)通信能力,無法實現(xiàn)分布式控制。本文針對上述情況設(shè)計了一種基于現(xiàn)場可編程門陣列(Field Programmable Gata Array,F(xiàn)PGA)的網(wǎng)絡(luò)化步進(jìn)電機(jī)控制器,采用通信芯片、FPGA、驅(qū)動芯片的體系結(jié)構(gòu),實現(xiàn)了FPGA獨立控制,網(wǎng)絡(luò)化分布式管理和全系統(tǒng)板級集成。該系統(tǒng)充分利用了FPGA硬件資源豐富,并行處理能力強(qiáng)、速度快、精度高、穩(wěn)定性好等特點,擺脫了傳統(tǒng)結(jié)構(gòu)對微控制器的依賴,在控制精度、運行速度、系統(tǒng)穩(wěn)定性和工作方式等方面有所突破。本文針對性的給出了該控制器的硬件結(jié)構(gòu)、工作原理、實現(xiàn)方法和驗證結(jié)果,供同行參考。
網(wǎng)絡(luò)化步進(jìn)電機(jī)控制器由以太網(wǎng)通信芯片W5100、步進(jìn)電機(jī)驅(qū)動芯片A3796和FPGA核心部件EP1C12三大部分構(gòu)成,如圖1所示。W5100是一款多功能的單片網(wǎng)絡(luò)接口器件,該芯片具備10/100 Mbps的全雙工通信能力,自帶16 K的內(nèi)部RAM(用于數(shù)據(jù)傳輸緩沖)和硬件化的PCT/IP協(xié)議站,提供了3種外部訪問接口,使用時只需進(jìn)行簡單的端口(socket)操作。A3796是一款集成化的兩相四拍制小功率步進(jìn)電機(jī)驅(qū)動芯片,具備邏輯控制、電機(jī)驅(qū)動、自診斷和故障保護(hù)功能。該芯片接口簡單,控制方便,有兩個獨立的H橋,通電順序由輸入邏輯控制。FPGA是智能化步進(jìn)電機(jī)控制器的核心部件,代替?zhèn)鹘y(tǒng)模式下的微控制器,執(zhí)行通信控制、電機(jī)控制、信息處理、系統(tǒng)診斷等任務(wù)。系統(tǒng)選用Altera公司的新一代SRAM工藝的FPGA芯片EP1C12,該芯片具有12 060個LE,2個PLL和52塊4 K的內(nèi)部RAM,在滿足系統(tǒng)要求的同時,保有充分的硬件資源可供擴(kuò)展。在接口設(shè)計方面:FPGA和W5100之間采用ISA并行總線連接,15位地址,8位數(shù)據(jù),外加 CS/RD/WR控制信號和INT中斷信號,數(shù)據(jù)操作時序和普通RAM基本相同;FPGA和A3796之間采用I/O邏輯信號連接,4個控制信號(PHASE1/2,ENABLE1/2)和2個狀態(tài)反饋信號(FAUL1/2),控制時序如表1所示。
圖1 硬件結(jié)構(gòu)圖
表1 A3796控制邏輯真值表
整個系統(tǒng)以Altera公司的EP1C12芯片為硬件載體,利用QuartusⅡ EDA平臺和VHDL硬件描述語言進(jìn)行設(shè)計開發(fā)和仿真驗證。FPGA作為該網(wǎng)絡(luò)化步進(jìn)電機(jī)控制器的核心部件,是系統(tǒng)設(shè)計的主要內(nèi)容,為了便于實現(xiàn)該例采用自頂向下的設(shè)計方法,將FPGA內(nèi)部結(jié)構(gòu)按功能分為通信處理器和電機(jī)控制器兩大部件。其中,通信處理器主要負(fù)責(zé)W5100芯片的初始化和網(wǎng)絡(luò)數(shù)據(jù)的接收/發(fā)送工作,電機(jī)控制器主要負(fù)責(zé)參數(shù)解析、邏輯控制、速度控制、準(zhǔn)確定位和系統(tǒng)診斷工作,它們之間通過內(nèi)部 FIFO進(jìn)行數(shù)據(jù)交換,通過“new_task”和“finish”信號進(jìn)行同步。具體結(jié)構(gòu)如圖2所示,本文重點介紹兩大模塊的系統(tǒng)結(jié)構(gòu)、工作原理、實現(xiàn)方法和信息交互機(jī)制。
通信處理器由時序電路構(gòu)成,通過有限狀態(tài)機(jī)實現(xiàn)。狀態(tài)機(jī)采用單進(jìn)程嵌套式結(jié)構(gòu),包含17個基本狀態(tài),每個基本狀態(tài)分為若干個子狀態(tài),基本狀態(tài)用于流程控制,子狀態(tài)用于端口操作。在基本狀態(tài)中S0為空閑狀態(tài),S1~S5為初始化狀態(tài),S6~S13為數(shù)據(jù)接收狀態(tài),S14~S17為數(shù)據(jù)發(fā)送狀態(tài),空閑狀態(tài)到工作狀態(tài)的轉(zhuǎn)換由外部信號(reset,int,finish)觸發(fā),工作流程內(nèi)部的狀態(tài)轉(zhuǎn)換靠系統(tǒng)時鐘和決斷語句控制,狀態(tài)圖如圖3所示。
圖2 FPGA內(nèi)部結(jié)構(gòu)示意圖
圖3 通信處理器狀態(tài)圖
狀態(tài)說明如下。S0為空閑狀態(tài),系統(tǒng)在沒有接收到任何外部信號的情況下處于該狀態(tài),另外在執(zhí)行完某個操作流程后也要返回該狀態(tài)。
(1)初始化過程為
S1:設(shè)置W5100的基本信息,包括工作模式(MR),中斷屏蔽(IMR),重發(fā)時間(RTR),重發(fā)次數(shù)(RCR);
S2:設(shè)置網(wǎng)絡(luò)信息,包括網(wǎng)關(guān)地址(GAR),本機(jī)物理地址(SHAR),子網(wǎng)掩碼(SUBR),本機(jī)IP(SIPR);
S3:設(shè)置端口0信息,包括發(fā)送存儲器讀指針(S0_TX),接收存儲器寫指針(S0_RX);
S4:初始化端口0,包括端口模式(S0_MR),端口號(S0_PORT);
S5:通過端口命令寄存器(S0_CR)打開端口,使其處于TCP模式的監(jiān)聽狀態(tài),隨后返回S0狀態(tài)。
(2)數(shù)據(jù)接收過程為
S6:讀取中斷信息(S0_IR);
S7:對中斷信息進(jìn)行判斷,如果接收到有效數(shù)據(jù)則開始數(shù)據(jù)讀取操作,否則直接進(jìn)入S13清除中斷標(biāo)志;
S8:讀接收緩沖區(qū)指針(S0_RX-RD)和字節(jié)長度信息(S0_RX_RSR);
S9:計算物理地址(READ_START_ADDRESS=x"6 000"+(x"07FF"and S0_RX-RD),RMSR=0X55);
S10:根據(jù)字節(jié)數(shù)和物理地址依次讀取有效數(shù)據(jù),并將數(shù)據(jù)寫入1#FIFO;
S11:重設(shè)接收數(shù)據(jù)地址指針寄存器S0_RX_RD(S0_RX_RD=S0_RX_RD+S0_RX_RSR);
S12:向命令寄存器(S0_CR)寫入接收完成命令;
S13:清除中斷標(biāo)志,向電機(jī)控制器發(fā)送“NEW_TASK”信號隨后返回S0。
(3)數(shù)據(jù)發(fā)送過程為
S14:讀寫指針寄存器(S0_TX_WR);
S15:計算物理地址(WRITE_START_ADDRESS=x"4 000"+(x"07FF"and S0_TX_WR),TMSR=0X55);
S16:將2#FIFO中的數(shù)據(jù)依次讀出,并寫入發(fā)送緩沖區(qū);
S17:向命令寄存器(S0_CR)寫入接收完成命令,隨后返回S0。
電機(jī)控制器由控制單元、任意分頻器、邏輯發(fā)生器和位置檢測器四部分構(gòu)成,如圖4所示。
圖4 電機(jī)控制器結(jié)構(gòu)圖
2.2.1 工作機(jī)制
控制單元在接收到來自通信處理器的“new_task”信號后,先從1#FIFO中讀取電機(jī)控制所需的各種參數(shù),再根據(jù)起始速度設(shè)定分頻系數(shù)(fre_quotiety)初值,然后通過使能信號(en1、en2、en3)起動任意分頻器、邏輯發(fā)生器和位置檢測器等功能模塊驅(qū)動電機(jī)運行,在電機(jī)運轉(zhuǎn)過程中根據(jù)速度曲線和電機(jī)當(dāng)前位置不斷調(diào)整分頻器的分頻系數(shù),以實現(xiàn)對步進(jìn)電機(jī)的加速、勻速、減速控制??刂七^程結(jié)束后控制單元先關(guān)閉外圍功能模塊,再將本次任務(wù)的執(zhí)行結(jié)果和電機(jī)的當(dāng)前狀態(tài)寫入2#FIFO,然后向通信處理器發(fā)出“finish”應(yīng)答信號。步進(jìn)電機(jī)的當(dāng)前位置在閉環(huán)模式下由位置檢測器提供,在開環(huán)模式下由內(nèi)部計數(shù)器提供。
2.2.2 設(shè)計實現(xiàn)
電機(jī)控制器的4個基本組件分別由4個并行進(jìn)程實現(xiàn),其中控制單元和邏輯發(fā)生器采用有限狀態(tài)機(jī),分頻器和位置檢測器采用普通的邏輯電路,進(jìn)程之間通過內(nèi)部信號進(jìn)行同步和數(shù)據(jù)交換。狀態(tài)機(jī)的實現(xiàn)方法和體系結(jié)構(gòu)及通信處理器類似,此處不作詳細(xì)描述。
測試環(huán)節(jié)以FPGA實驗板為硬件平臺,以TCP-UDP調(diào)試助手和SignalTaPⅡ邏輯分析器為測試工具,重點測試了通信處理器的端口服務(wù)操作流程及數(shù)據(jù)傳輸過程,以及電機(jī)控制器的遠(yuǎn)端控制參數(shù)響應(yīng)過程及輸出信號的相關(guān)特性(穩(wěn)定性、準(zhǔn)確性、重復(fù)性)。測試結(jié)果表明,該系統(tǒng)的各項功能滿足設(shè)計要求,通信功能正常,控制邏輯正確,輸出信號穩(wěn)定、可靠,通過電機(jī)控制組合邏輯實現(xiàn)了開環(huán)狀態(tài)下的速度控制和準(zhǔn)確定位,控制過程平穩(wěn)、流暢,系統(tǒng)具有很強(qiáng)的可實現(xiàn)性。系統(tǒng)測試結(jié)果如圖5所示。
圖5 測試結(jié)果監(jiān)控圖
本文設(shè)計了一種基于FPGA的網(wǎng)絡(luò)化步進(jìn)電機(jī)控制器,通過FPGA的運用,擺脫了傳統(tǒng)結(jié)構(gòu)對控制器的依賴,簡化了系統(tǒng)結(jié)構(gòu),提高了系統(tǒng)的穩(wěn)定性和控制的精確性;通過以太網(wǎng)通信芯片的運用,改變了傳統(tǒng)結(jié)構(gòu)基于串行總線的通信方式,增強(qiáng)了系統(tǒng)的開放性,使其具備了網(wǎng)絡(luò)化分布式控制能力;通過編碼器的運用使系統(tǒng)具備了本地閉環(huán)控制功能,提高了控制的精確性。驗證結(jié)果表明,該控制器技術(shù)路線可行,功能設(shè)置合理,具有較強(qiáng)的應(yīng)用價值。
該控制器也存在一定局限性,由于采用了集成化的步進(jìn)電機(jī)驅(qū)動芯片,驅(qū)動能力受到限制,在某些特定的應(yīng)用場合需要對系統(tǒng)進(jìn)行局部的改進(jìn)和優(yōu)化,用大功率驅(qū)動電路代替集成化的步進(jìn)電機(jī)驅(qū)動芯片,增強(qiáng)系統(tǒng)的適用性。
[1]張崇巍,李漢強(qiáng).運動控制系統(tǒng)[M].武漢:武漢理工大學(xué)出版社,2002.
[2]郗志剛,周宏甫.運動控制器的發(fā)展與現(xiàn)狀[J].電氣傳動自動化,2005,27(3):10-14.
[3]何國軍,陳維榮,劉小強(qiáng).基于DSP與FPGA的運動控制器設(shè)計[J].電子應(yīng)用技術(shù),2009(7):35-37.
[4]李洪偉,袁斯華.基于 QuartusⅡ的 FPGA/CPLD設(shè)計[M].北京:電子工業(yè)出版社,2006.
[5]吳紅星.電機(jī)驅(qū)動與控制專用集成電路及應(yīng)用[M].北京:中國電力出版社,2006.
[6]成都浩然電子有限公司.W5100數(shù)據(jù)手冊[G].2008.
[7]賈達(dá),鄒益民.基于FPGA的電機(jī)控制模塊[J].計算機(jī)工程與設(shè)計,2010,31(14):3237-3240.