何遠(yuǎn)松,謝明紅
(華僑大學(xué) 機(jī)電及自動(dòng)化學(xué)院,福建 廈門361021)
運(yùn)動(dòng)控制器是上位機(jī)與驅(qū)動(dòng)器之間的一座橋梁,它的性能很大程度上決定了整個(gè)數(shù)控系統(tǒng)的性能.“PC+運(yùn)動(dòng)控制器”的開放式數(shù)控技術(shù)已成為運(yùn)動(dòng)控制領(lǐng)域的主流方向[1],它由通用PC機(jī)發(fā)出控制指令,專用運(yùn)動(dòng)控制器接收指令完成具體功能.隨著數(shù)控技術(shù)的飛速發(fā)展,運(yùn)動(dòng)控制器的處理單元由單片機(jī)、專用芯片(ASIC),發(fā)展到了數(shù)字信號(hào)處理器(DSP)和現(xiàn)場(chǎng)可編程門陣列(FPGA)組成的高性能處理器[2-4].DSP的哈佛總線結(jié)構(gòu)、多流水線指令結(jié)構(gòu),特別適合數(shù)據(jù)量大、計(jì)數(shù)復(fù)雜、實(shí)時(shí)性要求高的場(chǎng)合;FPGA的硬件可重構(gòu)性強(qiáng)、設(shè)計(jì)靈活、I/O口眾多,可方便接口模塊擴(kuò)展,減輕了DSP負(fù)擔(dān).DSP+FPGA結(jié)構(gòu)已成為大多數(shù)高性能開放式運(yùn)動(dòng)控制器的主流設(shè)計(jì)方向 .本文設(shè)計(jì)了一種以浮點(diǎn)型數(shù)字信號(hào)處理器TMS320F28335為主控制器和EP2C8F256C6為協(xié)處理器的通用三軸運(yùn)動(dòng)控制器.

圖1 三軸運(yùn)動(dòng)控制器的系統(tǒng)框圖Fig.1 System block diagram of three-axis motion controller
圖1為三軸運(yùn)動(dòng)控制器的系統(tǒng)框圖.PC機(jī)作為上位機(jī),運(yùn)動(dòng)控制器作為下位機(jī),二者通過PCI接口芯片和雙口RAM進(jìn)行通訊.PC機(jī)發(fā)送控制命令,通過PCI接口芯片傳送到公共存儲(chǔ)器——雙口RAM中;然后,DSP程序從雙口RAM中讀取指令或數(shù)據(jù),結(jié)合FPGA反饋的編碼器信號(hào)對(duì)電機(jī)的速度和位置進(jìn)行規(guī)劃(包括伺服濾波、速度曲線規(guī)劃、粗插補(bǔ)運(yùn)算等);最后,F(xiàn)PGA根據(jù)DSP傳送來的數(shù)據(jù)完成精插補(bǔ)后,經(jīng)D/A模塊發(fā)送模擬量信號(hào)或經(jīng)變頻脈沖發(fā)生模塊輸出脈沖/方向信號(hào)到各個(gè)電機(jī)軸的伺服驅(qū)動(dòng)單元,從而實(shí)現(xiàn)電機(jī)的速度模式控制和位置模式控制.
8路通用數(shù)字輸入、輸出信號(hào),3個(gè)驅(qū)動(dòng)器的控制信號(hào)以及限位、報(bào)警信號(hào)都通過FPGA的I/O口設(shè)計(jì)完成,以減輕DSP開銷.同時(shí),F(xiàn)PGA還承擔(dān)PCI接口芯片的數(shù)據(jù)擴(kuò)展,以及雙口RAM的端口仲裁功能.整個(gè)控制器的輸入輸出信號(hào)(模擬電壓輸出部分除外)都采用光電隔離,以增強(qiáng)抗干擾能力,提高系統(tǒng)穩(wěn)定性.DSP和FPGA的I/O電平都為3.3 V,通過DSP的I/O對(duì)FPGA內(nèi)部的各模塊地址空間進(jìn)行統(tǒng)一編址,采用SN75174芯片完成單極性信號(hào)轉(zhuǎn)差分信號(hào),采用SN75175芯片完成差分信號(hào)轉(zhuǎn)單極性信號(hào).SN74LVTH16254完成3.3~5.0 V電平轉(zhuǎn)換,高速光耦6N137實(shí)現(xiàn)輸入與輸出隔離.
連接PCI總線的接口芯片采用江蘇南京沁恒電子有限公司的CH365.它將32位PCI總線轉(zhuǎn)換為類似于ISA總線的8位主動(dòng)并行接口,使用方法簡(jiǎn)單,非常適合用于短周期PCI接口卡制作.CH365支持以字節(jié)、字或雙字為單位的I/O段口或存儲(chǔ)器讀寫,存取速度高達(dá)7 MB,其接口框圖如圖2所示.
由于CH365地址總線為16位、數(shù)據(jù)總線為8位,而IDT70V25地址總線為13位、數(shù)據(jù)總線為16位,所以需對(duì)CH365進(jìn)行數(shù)據(jù)總線擴(kuò)展.其基本思想:CH365對(duì)IDT70V25進(jìn)行讀數(shù)據(jù)時(shí),雙口RAM的高8位數(shù)據(jù)直接讀入CH365中,低8位數(shù)據(jù)鎖存在FPGA中,下一時(shí)序再將低8位數(shù)據(jù)從FPGA中讀入CH365;CH365對(duì)IDT70V25進(jìn)行寫操作時(shí),低8位數(shù)據(jù)先鎖存在FPGA中,下一時(shí)序?qū)懜?位數(shù)據(jù)時(shí),使能FPGA中的低8位數(shù)據(jù)輸出信號(hào),將16位數(shù)據(jù)一起寫入IDT70V25中,如圖3所示.
用FPGA實(shí)現(xiàn)鎖存器,CH365的地址線A0用作使能信號(hào),完成16位數(shù)據(jù)分時(shí)讀寫.CH365讀時(shí),A0為高電平,高8位數(shù)據(jù)直接讀取,低8位鎖存到U1;CH365再讀一次時(shí),A0變?yōu)榈碗娖剑琑AM_CE為高電平(無效),U1中鎖存的低8位數(shù)據(jù)送入CH365.CH365寫時(shí),A0為低電平,低8位數(shù)據(jù)鎖存到U2;CH365再寫一次時(shí),A0變成高電平,RAM_CE、U2使能及OEN信號(hào)同時(shí)有效,高8位數(shù)據(jù)連同U2中鎖存的低8位數(shù)據(jù)一起寫入雙口RAM.U1用于讀時(shí)的低8位數(shù)據(jù)鎖存,U2用于寫時(shí)的低8數(shù)據(jù)位鎖存;先讀高8位再讀低8位,先寫低8位再寫高8位.

圖2 CH365接口框圖Fig.2 Interface block diagram of CH365

圖3 CH365數(shù)據(jù)總線擴(kuò)展配置圖Fig.3 Data bus extension configuration diagram of CH365
雙口RAM具有兩路完全獨(dú)立的端口,每個(gè)端口都有獨(dú)立的地址、數(shù)據(jù)和控制線,允許兩個(gè)端口同時(shí)讀/寫數(shù)據(jù),但不允許2端口同時(shí)寫或一讀一寫同一地址單元,否則會(huì)發(fā)生競(jìng)爭(zhēng)現(xiàn)象[5].本設(shè)計(jì)選用8 k B×16 B的IDT70V25高速雙口RAM,工作電壓3.3 V,數(shù)據(jù)存取時(shí)間高達(dá)20 ns.

圖4 雙口RAM硬件原理圖Fig.4 Hardware schematics of dual-port RAM
由于CH365沒有READY信號(hào)線,需要引入仲裁邏輯控制模塊解決地址競(jìng)爭(zhēng)問題.常用的方法有:令牌傳遞法、基于郵箱機(jī)制的INT中斷法和插入等待周期的BUSY法等[6].本設(shè)計(jì)采用基于郵箱機(jī)制的INT中斷法解決雙口RAM地址的競(jìng)爭(zhēng)問題 .基本原理:在IDT70V25中定義存儲(chǔ)單元0000 H為雙口RAM與CH365通信端口的中斷標(biāo)志郵箱,8000 H為雙口RAM與DSP通信端口的中斷標(biāo)志郵箱,其硬件原理如圖4所示.當(dāng)CH365向左端口寫地址單元0000 H時(shí)(CEL=R/WL=VIL),通過FPGA邏輯實(shí)現(xiàn)INTR(DSP中斷)為低,可向DSP發(fā)送中斷清求;當(dāng)DSP訪問0000H時(shí)(CER=OER=VIL),無論讀寫都可以清除中斷標(biāo)志INTR.同理,當(dāng)DSP寫地址單元8000 H時(shí),INTL(CH365中斷)為低,可向CH365發(fā)送中斷請(qǐng)求;當(dāng)左端口訪問8000 H時(shí),INTL為高,復(fù)位DSP發(fā)出的中斷請(qǐng)求.申請(qǐng)中斷時(shí)向郵箱寫入1,清除中斷時(shí)向郵箱寫0;當(dāng)信箱內(nèi)容為1時(shí),表示正在使用該方端口;當(dāng)信箱內(nèi)容為0時(shí),表示該端口使用結(jié)束.
DSP采用美國(guó)TI公司生產(chǎn)的32位浮點(diǎn)型處理器TMS320F28335.該處理器采用高性能靜態(tài)CMOS技術(shù),最高主頻150 MHz,2個(gè)獨(dú)立的正交編碼電路(QEP),12個(gè)可配置外部中斷[7].


表1 TMS320F28335芯片外存儲(chǔ)空間分配表Tab.1 External memory space allocation table of TMS320F28335
FPGA選擇美國(guó)Altera公司的CycloneⅡ系列的EP2C8F256C6,包含2個(gè)鎖相環(huán)(PLL)、8個(gè)全局時(shí)鐘、8 256個(gè)邏輯單元、182個(gè)I/O口.

圖5 變頻脈沖發(fā)生模塊原理圖Fig.5 Module schematic of frequency pulse
2.4.1 變頻脈沖發(fā)生模塊 變頻脈沖發(fā)生模塊主要產(chǎn)生脈沖控制信號(hào),完成精插補(bǔ)功能.該電路模塊由時(shí)序發(fā)生電路和數(shù)值分析法(DDA)積分器電路組成,如圖5所示.時(shí)序發(fā)生電路包括分頻器和計(jì)數(shù)器兩個(gè)部分,分頻器根據(jù)DSP提供的分頻系數(shù)對(duì)FPGA時(shí)鐘信號(hào)進(jìn)行分頻,分頻后的信號(hào)送給DDA積分電路,作為DDA積分器的累積時(shí)鐘信號(hào);計(jì)數(shù)器對(duì)累加時(shí)鐘進(jìn)行計(jì)數(shù),用于當(dāng)前插補(bǔ)周期插補(bǔ)終點(diǎn)的判斷,當(dāng)前插補(bǔ)周期的各軸進(jìn)給脈沖溢出時(shí),計(jì)數(shù)器會(huì)向DSP發(fā)送一個(gè)中斷請(qǐng)求信號(hào),停止本次精插補(bǔ)并加載下一周期精插補(bǔ)數(shù)據(jù)[9].DDA積分器電路主要由累加器、被積函數(shù)寄存器和脈沖輸出控制器組成.被積函數(shù)寄存器存放終點(diǎn)坐標(biāo),累加器存放累加值,累加器每溢出一次產(chǎn)生一個(gè)脈沖信號(hào),脈沖輸出控制器控制脈沖信號(hào)以脈沖/方向或者正/反轉(zhuǎn)方式輸出;累加器溢出的頻率,即為電機(jī)驅(qū)動(dòng)脈沖的頻率.每一個(gè)進(jìn)給軸對(duì)應(yīng)一個(gè)DDA積分器,每個(gè)DDA積分器的原理相同.
2.4.2 編碼器接口模塊 采用增量式光電編碼器作為檢測(cè)反饋元件,根據(jù)其旋轉(zhuǎn)方向由可逆計(jì)數(shù)器對(duì)脈沖進(jìn)行加減計(jì)數(shù).FPGA的編碼器接口模塊主要由4倍頻及鑒相電路、可逆計(jì)數(shù)器和位置寄存器組成,可逆計(jì)數(shù)器根據(jù)4倍頻及鑒相電路的方向信號(hào)對(duì)計(jì)數(shù)脈沖進(jìn)行加計(jì)數(shù)或減計(jì)數(shù),計(jì)數(shù)結(jié)果保存在位置寄存器中,以供DSP讀取或清零.4倍頻細(xì)分及鑒相電路的原理和時(shí)序仿真,分別如圖6,7所示.

圖6 4倍頻細(xì)分及鑒相電路原理圖Fig.6 Schematics of four interpolated and phase circuit
由于FPGA不能直接處理差分信號(hào),所以編碼器的反饋信號(hào)需經(jīng)SN75175將差分信號(hào)轉(zhuǎn)換為單極性信號(hào),再經(jīng)光電隔離和電平轉(zhuǎn)換后輸入到FPGA中.編碼器反饋的差分信號(hào)1A+,1A-轉(zhuǎn)換為單極信號(hào)1A,經(jīng)光耦6N137隔離輸出Fback_M(jìn)1A信號(hào)到電平轉(zhuǎn)換芯片(圖7).

圖7 4倍頻細(xì)分及鑒相電路時(shí)序仿真圖Fig.7 Timing simulation diagram of four interpolated and phase circuit
2.4.3 DA轉(zhuǎn)換電路 FPGA輸出的是數(shù)字信號(hào),為實(shí)現(xiàn)模擬電壓輸出,需要DA轉(zhuǎn)換芯片.DA選用美國(guó)AD公司推出的16位并行高性能模數(shù)轉(zhuǎn)換器AD669,它在單片芯片上包含雙緩沖鎖存,轉(zhuǎn)換鎖存的脈沖寬度為40 ns,輸出電壓極性有0~10 V或-10~+10 V可選,且電壓幅值可編程,在整個(gè)工作溫度區(qū)域內(nèi)具有±1 LSB的最大線性誤差,總的諧波失真加噪聲為0.009%.

表2 AD669的控制邏輯真值表Tab.2 Logic control truth table of AD669
插補(bǔ)是實(shí)現(xiàn)運(yùn)動(dòng)軌跡控制的核心,常用的插補(bǔ)方法有兩類:脈沖增量插補(bǔ)法和數(shù)據(jù)采樣插補(bǔ)法.常用的脈沖增量插補(bǔ)算法有逐點(diǎn)比較法、DDA等.DDA插補(bǔ)算法運(yùn)算速度快,脈沖分配均勻,易于實(shí)現(xiàn)多軸聯(lián)動(dòng)控制,應(yīng)用比較廣泛[11].數(shù)據(jù)采樣插補(bǔ)法的過程一般分兩步完成.第一步是粗插補(bǔ),在給定曲線的起點(diǎn)與終點(diǎn)間插入若干個(gè)點(diǎn),首尾連接這些點(diǎn),用這些微小直線段來逼近給定曲線;第二步為精插補(bǔ),對(duì)粗插補(bǔ)中的每個(gè)微小直線段進(jìn)行密化,相當(dāng)于直線的脈沖增量插補(bǔ)[12].
本設(shè)計(jì)采用時(shí)間分割法完成粗插補(bǔ),DDA完成精插補(bǔ),粗插補(bǔ)在DSP中實(shí)現(xiàn),精插補(bǔ)在FPGA中實(shí)現(xiàn).時(shí)間分割法插補(bǔ)算法的具體實(shí)現(xiàn)是根據(jù)工件的進(jìn)給速度F,以插補(bǔ)周期T為時(shí)間單位,將整段加工過程L分割成許多小段ΔL,并將其分解到各個(gè)坐標(biāo)軸,得到本周期內(nèi)各軸方向的進(jìn)給量;然后,根據(jù)不同插補(bǔ)類型和已知插補(bǔ)點(diǎn)坐標(biāo),計(jì)算出下一個(gè)插補(bǔ)周期的插補(bǔ)點(diǎn)坐標(biāo).FPGA接收DSP運(yùn)算的各軸進(jìn)給量,采用DDA插補(bǔ)算法轉(zhuǎn)換為正負(fù)進(jìn)給脈沖信號(hào)或者脈沖/方向信號(hào),完成各軸進(jìn)給量也即小段直線ΔL插補(bǔ)完成.如此循環(huán),直到整段加工過程L完成后,開始下一過程加工 .整個(gè)插補(bǔ)軟件流程,如圖8所示.

圖8 運(yùn)動(dòng)控制器插補(bǔ)軟件流程圖Fig.8 Software flow chart of motion controller interpolation
CH365芯片提供了基于DOS的開源驅(qū)動(dòng)函數(shù)庫(CH365dos.c和CH365dos.h)和基于 Windows的驅(qū)動(dòng)程序及動(dòng)態(tài)鏈接庫.在DOS和 Windows 9X操作系統(tǒng)下,采用VC++6.0開發(fā)程序時(shí)可直接調(diào)用CH365dos.c中的函數(shù),實(shí)現(xiàn)對(duì)控制器的驅(qū)動(dòng)和控制.在 Windows 2000/XP系統(tǒng)下,首先安裝CH365驅(qū)動(dòng)程序CH365WMD.INF,正確安裝好驅(qū)動(dòng)后,在程序中添加CH365DLL.H頭文件,并把CH365DLL.H文件拷貝到程序的工程目錄下,調(diào)用CH365DLL中封裝的相應(yīng)函數(shù)庫即可實(shí)現(xiàn)PC機(jī)與運(yùn)動(dòng)控制器的通信.
設(shè)計(jì)一種基于DSP和FPGA的通用三軸運(yùn)動(dòng)控制器硬件平臺(tái),并完成了相應(yīng)軟件的設(shè)計(jì)與實(shí)現(xiàn),并在研華610G工控機(jī)、安川Σ-V驅(qū)動(dòng)器、安川SGMJV-08ADD6S伺服電機(jī)得到應(yīng)用.該控制器采用高性能浮點(diǎn)DSP提高了數(shù)控加工精度;結(jié)合時(shí)間分割法和數(shù)值積分法插補(bǔ)算法,縮短了伺服周期,提高了加工速度和多軸聯(lián)動(dòng)控制難度;采用FPGA模塊化設(shè)計(jì)增加了系統(tǒng)設(shè)計(jì)的靈活性和開發(fā)性.此外,由于選用了國(guó)產(chǎn)CH365接口芯片,在滿足PCI高速通訊的同時(shí),也降低了設(shè)計(jì)成本.
[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] 張崇巍,李漢強(qiáng).運(yùn)動(dòng)控制系統(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] 舒志兵.交流伺服運(yùn)動(dòng)控制系統(tǒng)[M].北京:清華大學(xué)出版社,2006:144-145.
[5] 李新建.基于PCI總線的多軸運(yùn)動(dòng)控制卡的設(shè)計(jì)[D].南京:南京航空航天大學(xué),2007:20-21.
[6] 李新建,薛重德,張志林.用CH365實(shí)現(xiàn)PCI總線與DSP的通信[J].單片機(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ì)[J].昆明理工大學(xué)學(xué)報(bào):理工版,2005,30(5A):219-221.
[9] 張宇.基于DSP和FPGA的運(yùn)動(dòng)控制卡的研究與設(shè)計(jì)[D].南京:南京航空航天大學(xué),2007:44-46.
[10] 石江華.基于DSP與FPGA的四軸運(yùn)動(dòng)控制器設(shè)計(jì)與研究[D].北京:北京郵電大學(xué),2012:30-31.
[11] 李恩林.數(shù)控系統(tǒng)插補(bǔ)原理通論[M].北京:國(guó)防工業(yè)出版社,2008:75-78.
[12] 李斌,李曦.數(shù)控技術(shù)[M].武漢:華中科技大學(xué)出版社,2011:104-105.