何遠(yuǎn)松,謝明紅
(華僑大學(xué) 機電及自動化學(xué)院,福建 廈門361021)
運動控制器是上位機與驅(qū)動器之間的一座橋梁,它的性能很大程度上決定了整個數(shù)控系統(tǒng)的性能.“PC+運動控制器”的開放式數(shù)控技術(shù)已成為運動控制領(lǐng)域的主流方向[1],它由通用PC機發(fā)出控制指令,專用運動控制器接收指令完成具體功能.隨著數(shù)控技術(shù)的飛速發(fā)展,運動控制器的處理單元由單片機、專用芯片(ASIC),發(fā)展到了數(shù)字信號處理器(DSP)和現(xiàn)場可編程門陣列(FPGA)組成的高性能處理器[2-4].DSP的哈佛總線結(jié)構(gòu)、多流水線指令結(jié)構(gòu),特別適合數(shù)據(jù)量大、計數(shù)復(fù)雜、實時性要求高的場合;FPGA的硬件可重構(gòu)性強、設(shè)計靈活、I/O口眾多,可方便接口模塊擴展,減輕了DSP負(fù)擔(dān).DSP+FPGA結(jié)構(gòu)已成為大多數(shù)高性能開放式運動控制器的主流設(shè)計方向 .本文設(shè)計了一種以浮點型數(shù)字信號處理器TMS320F28335為主控制器和EP2C8F256C6為協(xié)處理器的通用三軸運動控制器.
圖1 三軸運動控制器的系統(tǒng)框圖Fig.1 System block diagram of three-axis motion controller
圖1為三軸運動控制器的系統(tǒng)框圖.PC機作為上位機,運動控制器作為下位機,二者通過PCI接口芯片和雙口RAM進(jìn)行通訊.PC機發(fā)送控制命令,通過PCI接口芯片傳送到公共存儲器——雙口RAM中;然后,DSP程序從雙口RAM中讀取指令或數(shù)據(jù),結(jié)合FPGA反饋的編碼器信號對電機的速度和位置進(jìn)行規(guī)劃(包括伺服濾波、速度曲線規(guī)劃、粗插補運算等);最后,F(xiàn)PGA根據(jù)DSP傳送來的數(shù)據(jù)完成精插補后,經(jīng)D/A模塊發(fā)送模擬量信號或經(jīng)變頻脈沖發(fā)生模塊輸出脈沖/方向信號到各個電機軸的伺服驅(qū)動單元,從而實現(xiàn)電機的速度模式控制和位置模式控制.
8路通用數(shù)字輸入、輸出信號,3個驅(qū)動器的控制信號以及限位、報警信號都通過FPGA的I/O口設(shè)計完成,以減輕DSP開銷.同時,F(xiàn)PGA還承擔(dān)PCI接口芯片的數(shù)據(jù)擴展,以及雙口RAM的端口仲裁功能.整個控制器的輸入輸出信號(模擬電壓輸出部分除外)都采用光電隔離,以增強抗干擾能力,提高系統(tǒng)穩(wěn)定性.DSP和FPGA的I/O電平都為3.3 V,通過DSP的I/O對FPGA內(nèi)部的各模塊地址空間進(jìn)行統(tǒng)一編址,采用SN75174芯片完成單極性信號轉(zhuǎn)差分信號,采用SN75175芯片完成差分信號轉(zhuǎn)單極性信號.SN74LVTH16254完成3.3~5.0 V電平轉(zhuǎn)換,高速光耦6N137實現(xiàn)輸入與輸出隔離.
連接PCI總線的接口芯片采用江蘇南京沁恒電子有限公司的CH365.它將32位PCI總線轉(zhuǎn)換為類似于ISA總線的8位主動并行接口,使用方法簡單,非常適合用于短周期PCI接口卡制作.CH365支持以字節(jié)、字或雙字為單位的I/O段口或存儲器讀寫,存取速度高達(dá)7 MB,其接口框圖如圖2所示.
由于CH365地址總線為16位、數(shù)據(jù)總線為8位,而IDT70V25地址總線為13位、數(shù)據(jù)總線為16位,所以需對CH365進(jìn)行數(shù)據(jù)總線擴展.其基本思想:CH365對IDT70V25進(jìn)行讀數(shù)據(jù)時,雙口RAM的高8位數(shù)據(jù)直接讀入CH365中,低8位數(shù)據(jù)鎖存在FPGA中,下一時序再將低8位數(shù)據(jù)從FPGA中讀入CH365;CH365對IDT70V25進(jìn)行寫操作時,低8位數(shù)據(jù)先鎖存在FPGA中,下一時序?qū)懜?位數(shù)據(jù)時,使能FPGA中的低8位數(shù)據(jù)輸出信號,將16位數(shù)據(jù)一起寫入IDT70V25中,如圖3所示.
用FPGA實現(xiàn)鎖存器,CH365的地址線A0用作使能信號,完成16位數(shù)據(jù)分時讀寫.CH365讀時,A0為高電平,高8位數(shù)據(jù)直接讀取,低8位鎖存到U1;CH365再讀一次時,A0變?yōu)榈碗娖?,RAM_CE為高電平(無效),U1中鎖存的低8位數(shù)據(jù)送入CH365.CH365寫時,A0為低電平,低8位數(shù)據(jù)鎖存到U2;CH365再寫一次時,A0變成高電平,RAM_CE、U2使能及OEN信號同時有效,高8位數(shù)據(jù)連同U2中鎖存的低8位數(shù)據(jù)一起寫入雙口RAM.U1用于讀時的低8位數(shù)據(jù)鎖存,U2用于寫時的低8數(shù)據(jù)位鎖存;先讀高8位再讀低8位,先寫低8位再寫高8位.
圖2 CH365接口框圖Fig.2 Interface block diagram of CH365
圖3 CH365數(shù)據(jù)總線擴展配置圖Fig.3 Data bus extension configuration diagram of CH365
雙口RAM具有兩路完全獨立的端口,每個端口都有獨立的地址、數(shù)據(jù)和控制線,允許兩個端口同時讀/寫數(shù)據(jù),但不允許2端口同時寫或一讀一寫同一地址單元,否則會發(fā)生競爭現(xiàn)象[5].本設(shè)計選用8 k B×16 B的IDT70V25高速雙口RAM,工作電壓3.3 V,數(shù)據(jù)存取時間高達(dá)20 ns.
圖4 雙口RAM硬件原理圖Fig.4 Hardware schematics of dual-port RAM
由于CH365沒有READY信號線,需要引入仲裁邏輯控制模塊解決地址競爭問題.常用的方法有:令牌傳遞法、基于郵箱機制的INT中斷法和插入等待周期的BUSY法等[6].本設(shè)計采用基于郵箱機制的INT中斷法解決雙口RAM地址的競爭問題 .基本原理:在IDT70V25中定義存儲單元0000 H為雙口RAM與CH365通信端口的中斷標(biāo)志郵箱,8000 H為雙口RAM與DSP通信端口的中斷標(biāo)志郵箱,其硬件原理如圖4所示.當(dāng)CH365向左端口寫地址單元0000 H時(CEL=R/WL=VIL),通過FPGA邏輯實現(xiàn)INTR(DSP中斷)為低,可向DSP發(fā)送中斷清求;當(dāng)DSP訪問0000H時(CER=OER=VIL),無論讀寫都可以清除中斷標(biāo)志INTR.同理,當(dāng)DSP寫地址單元8000 H時,INTL(CH365中斷)為低,可向CH365發(fā)送中斷請求;當(dāng)左端口訪問8000 H時,INTL為高,復(fù)位DSP發(fā)出的中斷請求.申請中斷時向郵箱寫入1,清除中斷時向郵箱寫0;當(dāng)信箱內(nèi)容為1時,表示正在使用該方端口;當(dāng)信箱內(nèi)容為0時,表示該端口使用結(jié)束.
DSP采用美國TI公司生產(chǎn)的32位浮點型處理器TMS320F28335.該處理器采用高性能靜態(tài)CMOS技術(shù),最高主頻150 MHz,2個獨立的正交編碼電路(QEP),12個可配置外部中斷[7].
表1 TMS320F28335芯片外存儲空間分配表Tab.1 External memory space allocation table of TMS320F28335
FPGA選擇美國Altera公司的CycloneⅡ系列的EP2C8F256C6,包含2個鎖相環(huán)(PLL)、8個全局時鐘、8 256個邏輯單元、182個I/O口.
圖5 變頻脈沖發(fā)生模塊原理圖Fig.5 Module schematic of frequency pulse
2.4.1 變頻脈沖發(fā)生模塊 變頻脈沖發(fā)生模塊主要產(chǎn)生脈沖控制信號,完成精插補功能.該電路模塊由時序發(fā)生電路和數(shù)值分析法(DDA)積分器電路組成,如圖5所示.時序發(fā)生電路包括分頻器和計數(shù)器兩個部分,分頻器根據(jù)DSP提供的分頻系數(shù)對FPGA時鐘信號進(jìn)行分頻,分頻后的信號送給DDA積分電路,作為DDA積分器的累積時鐘信號;計數(shù)器對累加時鐘進(jìn)行計數(shù),用于當(dāng)前插補周期插補終點的判斷,當(dāng)前插補周期的各軸進(jìn)給脈沖溢出時,計數(shù)器會向DSP發(fā)送一個中斷請求信號,停止本次精插補并加載下一周期精插補數(shù)據(jù)[9].DDA積分器電路主要由累加器、被積函數(shù)寄存器和脈沖輸出控制器組成.被積函數(shù)寄存器存放終點坐標(biāo),累加器存放累加值,累加器每溢出一次產(chǎn)生一個脈沖信號,脈沖輸出控制器控制脈沖信號以脈沖/方向或者正/反轉(zhuǎn)方式輸出;累加器溢出的頻率,即為電機驅(qū)動脈沖的頻率.每一個進(jìn)給軸對應(yīng)一個DDA積分器,每個DDA積分器的原理相同.
2.4.2 編碼器接口模塊 采用增量式光電編碼器作為檢測反饋元件,根據(jù)其旋轉(zhuǎn)方向由可逆計數(shù)器對脈沖進(jìn)行加減計數(shù).FPGA的編碼器接口模塊主要由4倍頻及鑒相電路、可逆計數(shù)器和位置寄存器組成,可逆計數(shù)器根據(jù)4倍頻及鑒相電路的方向信號對計數(shù)脈沖進(jìn)行加計數(shù)或減計數(shù),計數(shù)結(jié)果保存在位置寄存器中,以供DSP讀取或清零.4倍頻細(xì)分及鑒相電路的原理和時序仿真,分別如圖6,7所示.
圖6 4倍頻細(xì)分及鑒相電路原理圖Fig.6 Schematics of four interpolated and phase circuit
由于FPGA不能直接處理差分信號,所以編碼器的反饋信號需經(jīng)SN75175將差分信號轉(zhuǎn)換為單極性信號,再經(jīng)光電隔離和電平轉(zhuǎn)換后輸入到FPGA中.編碼器反饋的差分信號1A+,1A-轉(zhuǎn)換為單極信號1A,經(jīng)光耦6N137隔離輸出Fback_M(jìn)1A信號到電平轉(zhuǎn)換芯片(圖7).
圖7 4倍頻細(xì)分及鑒相電路時序仿真圖Fig.7 Timing simulation diagram of four interpolated and phase circuit
2.4.3 DA轉(zhuǎn)換電路 FPGA輸出的是數(shù)字信號,為實現(xiàn)模擬電壓輸出,需要DA轉(zhuǎn)換芯片.DA選用美國AD公司推出的16位并行高性能模數(shù)轉(zhuǎn)換器AD669,它在單片芯片上包含雙緩沖鎖存,轉(zhuǎn)換鎖存的脈沖寬度為40 ns,輸出電壓極性有0~10 V或-10~+10 V可選,且電壓幅值可編程,在整個工作溫度區(qū)域內(nèi)具有±1 LSB的最大線性誤差,總的諧波失真加噪聲為0.009%.
表2 AD669的控制邏輯真值表Tab.2 Logic control truth table of AD669
插補是實現(xiàn)運動軌跡控制的核心,常用的插補方法有兩類:脈沖增量插補法和數(shù)據(jù)采樣插補法.常用的脈沖增量插補算法有逐點比較法、DDA等.DDA插補算法運算速度快,脈沖分配均勻,易于實現(xiàn)多軸聯(lián)動控制,應(yīng)用比較廣泛[11].數(shù)據(jù)采樣插補法的過程一般分兩步完成.第一步是粗插補,在給定曲線的起點與終點間插入若干個點,首尾連接這些點,用這些微小直線段來逼近給定曲線;第二步為精插補,對粗插補中的每個微小直線段進(jìn)行密化,相當(dāng)于直線的脈沖增量插補[12].
本設(shè)計采用時間分割法完成粗插補,DDA完成精插補,粗插補在DSP中實現(xiàn),精插補在FPGA中實現(xiàn).時間分割法插補算法的具體實現(xiàn)是根據(jù)工件的進(jìn)給速度F,以插補周期T為時間單位,將整段加工過程L分割成許多小段ΔL,并將其分解到各個坐標(biāo)軸,得到本周期內(nèi)各軸方向的進(jìn)給量;然后,根據(jù)不同插補類型和已知插補點坐標(biāo),計算出下一個插補周期的插補點坐標(biāo).FPGA接收DSP運算的各軸進(jìn)給量,采用DDA插補算法轉(zhuǎn)換為正負(fù)進(jìn)給脈沖信號或者脈沖/方向信號,完成各軸進(jìn)給量也即小段直線ΔL插補完成.如此循環(huán),直到整段加工過程L完成后,開始下一過程加工 .整個插補軟件流程,如圖8所示.
圖8 運動控制器插補軟件流程圖Fig.8 Software flow chart of motion controller interpolation
CH365芯片提供了基于DOS的開源驅(qū)動函數(shù)庫(CH365dos.c和CH365dos.h)和基于 Windows的驅(qū)動程序及動態(tài)鏈接庫.在DOS和 Windows 9X操作系統(tǒng)下,采用VC++6.0開發(fā)程序時可直接調(diào)用CH365dos.c中的函數(shù),實現(xiàn)對控制器的驅(qū)動和控制.在 Windows 2000/XP系統(tǒng)下,首先安裝CH365驅(qū)動程序CH365WMD.INF,正確安裝好驅(qū)動后,在程序中添加CH365DLL.H頭文件,并把CH365DLL.H文件拷貝到程序的工程目錄下,調(diào)用CH365DLL中封裝的相應(yīng)函數(shù)庫即可實現(xiàn)PC機與運動控制器的通信.
設(shè)計一種基于DSP和FPGA的通用三軸運動控制器硬件平臺,并完成了相應(yīng)軟件的設(shè)計與實現(xiàn),并在研華610G工控機、安川Σ-V驅(qū)動器、安川SGMJV-08ADD6S伺服電機得到應(yīng)用.該控制器采用高性能浮點DSP提高了數(shù)控加工精度;結(jié)合時間分割法和數(shù)值積分法插補算法,縮短了伺服周期,提高了加工速度和多軸聯(lián)動控制難度;采用FPGA模塊化設(shè)計增加了系統(tǒng)設(shè)計的靈活性和開發(fā)性.此外,由于選用了國產(chǎn)CH365接口芯片,在滿足PCI高速通訊的同時,也降低了設(shè)計成本.
[1] XU Xiao-ming,LI Yi,SUN Ji-hong,et al.Research and development of open CNC system based on PC and motion controller[J].Procedia Engineering,2012,29:1845-1850.
[2] 張崇巍,李漢強.運動控制系統(tǒng)[M].武漢:武漢理工大學(xué)出版社,2002:85-98.
[3] KEMAL M C.TOMIZUKA M.Friction modelling and compensation for motion control using hybrid neural network models[J].Engineering Applications of Artificial Intelligence,2007,20(7):898-911.
[4] 舒志兵.交流伺服運動控制系統(tǒng)[M].北京:清華大學(xué)出版社,2006:144-145.
[5] 李新建.基于PCI總線的多軸運動控制卡的設(shè)計[D].南京:南京航空航天大學(xué),2007:20-21.
[6] 李新建,薛重德,張志林.用CH365實現(xiàn)PCI總線與DSP的通信[J].單片機與嵌入式系統(tǒng)應(yīng)用,2006(12):25-28.
[7] Texas Instruments.Literature number:SPRZ272E TMS320F2833X,TMS320F2823X digital signal controllers(DSCs)data manual[S].Texas:Texas Instruments Incorporated,2007:35-45.
[8] 申子星,馮麗輝.基于DSP的供電電源電路設(shè)計[J].昆明理工大學(xué)學(xué)報:理工版,2005,30(5A):219-221.
[9] 張宇.基于DSP和FPGA的運動控制卡的研究與設(shè)計[D].南京:南京航空航天大學(xué),2007:44-46.
[10] 石江華.基于DSP與FPGA的四軸運動控制器設(shè)計與研究[D].北京:北京郵電大學(xué),2012:30-31.
[11] 李恩林.數(shù)控系統(tǒng)插補原理通論[M].北京:國防工業(yè)出版社,2008:75-78.
[12] 李斌,李曦.數(shù)控技術(shù)[M].武漢:華中科技大學(xué)出版社,2011:104-105.