引言
當(dāng)今,開(kāi)放式數(shù)控系統(tǒng)正在工業(yè)領(lǐng)域得到廣泛應(yīng)用。其中,工控機(jī)通過(guò)PCI總線連接專用運(yùn)動(dòng)控制卡的數(shù)控系統(tǒng)最為流行。在運(yùn)動(dòng)控制卡中,由于DSP采用多總線哈佛結(jié)構(gòu)使得處理指令和數(shù)據(jù)可以同時(shí)進(jìn)行,因此相比傳統(tǒng)控制中的單片機(jī)具有更多的優(yōu)勢(shì)。同時(shí),運(yùn)動(dòng)控制卡與PC機(jī)通過(guò)PCI局部總線通信,能夠達(dá)到很高的數(shù)據(jù)傳輸速率,從而還保證了數(shù)控系統(tǒng)的實(shí)時(shí)性。
系統(tǒng)概述
系統(tǒng)的功能框圖如圖1所示。該系統(tǒng)的核心是TI公司的16位定點(diǎn)DSP芯片TMS320LF2407A。DSP芯片負(fù)責(zé)接收PCI局部總線的命令和參數(shù),然后經(jīng)過(guò)特定的運(yùn)動(dòng)控制算法,如系統(tǒng)位置、速度調(diào)節(jié)、插補(bǔ)算法等,從而完成對(duì)步進(jìn)電機(jī)的精確運(yùn)動(dòng)控制。同時(shí)DSP芯片還負(fù)責(zé)將反饋信息傳輸給PCI局部總線,并且控制系統(tǒng)外圍I/O模塊。DSP芯片與計(jì)算機(jī)的通信通過(guò)PCI橋接芯片CY09449實(shí)現(xiàn)。
DSP模塊
DSP芯片TMS320LF2407A采用高性能靜態(tài)CMOS工藝,供電電壓僅3.3V;指令周期縮短到33ns。
作為系統(tǒng)的核心,TMS320LF 2407A主要完成復(fù)雜的運(yùn)動(dòng)控制算法,比如升降頻控制、插入補(bǔ)償?shù)取1驹O(shè)計(jì)主要是完成雙軸步進(jìn)電機(jī)控制,故插入補(bǔ)償采用經(jīng)典的DDA算法。由于本設(shè)計(jì)對(duì)步進(jìn)電機(jī)采用無(wú)反饋控制,這樣對(duì)步進(jìn)電機(jī)的升降頻控制就顯得格外重要,這也成了整個(gè)系統(tǒng)設(shè)計(jì)的一個(gè)難點(diǎn)。根據(jù)步進(jìn)電機(jī)變速過(guò)程動(dòng)力學(xué)特性,以指數(shù)曲線前段規(guī)律作為前后沿的近似梯形波,進(jìn)而確定升降頻特性,這樣既能保證步進(jìn)電機(jī)運(yùn)行過(guò)程不會(huì)失步,又充分發(fā)揮了步進(jìn)電機(jī)的固有性能,使升頻過(guò)程達(dá)到時(shí)間最短的要求。下面討論一下升降頻控制的算法實(shí)現(xiàn)。
升降頻控制
為實(shí)現(xiàn)所確定的運(yùn)行頻率—時(shí)間函數(shù),通常是將其離散化,即將其轉(zhuǎn)換為脈沖時(shí)間間隔對(duì)脈沖個(gè)數(shù)的函數(shù)。另一種方法是按升降頻過(guò)程所走過(guò)的脈沖步數(shù)通過(guò)定步中斷來(lái)變頻。但是離散化方法既會(huì)引起頻率突跳和失步,又要進(jìn)行復(fù)雜的迭代運(yùn)算,而定步法同樣需要進(jìn)行迭代。這兩種方法在DSP上都不易實(shí)現(xiàn)且靈活性較差。為此本文研究了一種稱為定時(shí)的方法。
設(shè)最高運(yùn)行頻率為fh(電機(jī)恒速段的速度),升頻段總時(shí)間為ts。則根據(jù)步進(jìn)電動(dòng)機(jī)指數(shù)型升頻過(guò)程的頻率—時(shí)間關(guān)系:
f(t)=fM-(fM-fb)*exp(-t/T) (1)
式中fb為步進(jìn)電動(dòng)機(jī)起動(dòng)頻率;fM為極限運(yùn)行頻率;T為驅(qū)動(dòng)系統(tǒng)時(shí)間常數(shù)
則有fh=f(ts)=fM-(fM-fb)*exp(-ts/T)
從而得到
ts=T*ln((fM-fb)/(fM-fh)) (2)
將ts等分為N段,得到各段時(shí)間為:ta=ts/N
則在第i個(gè)等分段ta內(nèi)脈沖切換頻率和要送出的脈沖數(shù)分別為:
f[i]=f(i*ta)=fM-(fM-fb)*exp(-i*ta/T)(3)
X[i]=ta*f[i] (4)
故升頻段的總步數(shù)為:
P=X[0]+X[1]+…+X[N-1] (5)
將脈沖間隔1/f[i]轉(zhuǎn)換為DSP內(nèi)部16位定時(shí)器的時(shí)間常數(shù)K[i]。轉(zhuǎn)換關(guān)系式為
K[i]=f_DSP/f[i], i=0,1,2…, N-1 (6)
由于降頻段特性變化規(guī)律與升頻段相反,可知降頻序列是升頻序列的逆序列。
電機(jī)在恒速步進(jìn)階段,以fh的換相頻率步進(jìn)。因此對(duì)應(yīng)的定時(shí)器時(shí)間常數(shù)為:
K[N]=f_DSP/fh (7)
恒速段總步數(shù)為:
X_h=X_total-2*P (8)
式中X_total為步進(jìn)電機(jī)運(yùn)動(dòng)的總步數(shù)。
電機(jī)運(yùn)行前,由主程序計(jì)算出升頻段和恒速段定時(shí)器時(shí)間常數(shù)序列K[i](i=0, …,N-1),存放于DSP的SARAM中,形成一個(gè)K-P升速表格。當(dāng)電機(jī)運(yùn)行時(shí),在線查表,并取出K[i]用于設(shè)置DSP的PWM中周期寄存器的值,從而不斷改變PWM波形的周期,實(shí)現(xiàn)對(duì)電機(jī)的速度調(diào)節(jié)。根據(jù)升速、降速或高頻恒速,決定升速表地址指針增1、減1或不變。通過(guò)這種定時(shí)的方法,一方面提高了系統(tǒng)的靈活性,可根據(jù)輸入的最高頻率、起動(dòng)頻率等參數(shù)改變升降速表,另一方面升降速表的求取不占用運(yùn)行時(shí)間,從而提高了運(yùn)行效率。
系統(tǒng)的部分軟件流程
圖2為升降頻控制子程序流程圖,其中:p_SARAM為指向電機(jī)升降速時(shí)間常數(shù)表的指針,采用DSP的內(nèi)部SARAM來(lái)存放該表;X_up、X_con、X_down分別代表電機(jī)在升速段、恒速段、降速段要走的總步數(shù);up_flag、con_flag、down_flag分別代表當(dāng)前電機(jī)的運(yùn)動(dòng)狀態(tài)(升速、恒速、降速)。
DSP與PC機(jī)的通信
DSP與PC機(jī)的通信通過(guò)CY09449連接,CY09449內(nèi)部帶有128KB雙向靜態(tài)SRAM,為了在工作中,使PC機(jī)和DSP對(duì)SRAM的訪問(wèn)不會(huì)發(fā)生沖突,本設(shè)計(jì)中把SRAM均分為兩個(gè)單元A和B, PC機(jī)和DSP對(duì)這兩部分的操作采用乒乓操作模式。由于DSP具有外部數(shù)據(jù)存儲(chǔ)器擴(kuò)展能力,所以該SRAM完全可以作為DSP的外擴(kuò)數(shù)據(jù)存儲(chǔ)器,這樣在設(shè)計(jì)中便采用DSP的外部數(shù)據(jù)存儲(chǔ)器有效信號(hào)/DS來(lái)作為CY09449的片選信號(hào)/SELECT。
DSP的編碼接口
本設(shè)計(jì)也考慮到如果需要對(duì)電機(jī)進(jìn)行高級(jí)精確控制時(shí),就需要對(duì)電機(jī)進(jìn)行閉環(huán)控制。一般情況下,會(huì)運(yùn)用光電編碼器作為系統(tǒng)的閉環(huán)反饋元件。由于本設(shè)計(jì)是針對(duì)雙軸步進(jìn)電機(jī)的運(yùn)動(dòng),而單軸的光電編碼器就輸出兩相相差為90°的脈沖信號(hào)A、B,以及歸零信號(hào)Z(都是差分形式),這樣一共就有6路反饋信號(hào)。但是DSP只有兩個(gè)正交編碼單元,所以設(shè)計(jì)中把DSP的引腳PWM9和PWM10設(shè)為通用輸入腳。這樣,反饋信號(hào)經(jīng)過(guò)高速光耦隔離后,就送入到DSP的正交編碼接口QEP1/QEP2、QEP3/QEP4,以及PWM9/PWM10,然后由DSP對(duì)該反饋信號(hào)進(jìn)行計(jì)算處理,從而得出電機(jī)的實(shí)際運(yùn)動(dòng)信息。
步進(jìn)電機(jī)接口
本設(shè)計(jì)中通過(guò)DSP的PWM單元來(lái)對(duì)步進(jìn)電機(jī)進(jìn)行控制。由于電機(jī)是功率器件,所以由DSP輸出的PWM波形不能直接輸入到驅(qū)動(dòng)器中,而是必須采用光耦進(jìn)行隔離,這樣才能避免電機(jī)的大電壓信號(hào)把DSP燒壞。此外由于DSP輸出的PWM信號(hào)很弱,如果直接加在電機(jī)驅(qū)動(dòng)器上,驅(qū)動(dòng)器將檢測(cè)不到該信號(hào),所以在DSP的PWM信號(hào)輸出級(jí)需加長(zhǎng)線驅(qū)動(dòng)。本設(shè)計(jì)中采用了5V的差分長(zhǎng)線驅(qū)動(dòng)器AM26LS31。
PCI模塊
本系統(tǒng)選擇PCI局部總線作為DSP與上位機(jī)的通信方式,主要是因?yàn)镻CI總線速率最高可達(dá)528Mbps,實(shí)時(shí)性強(qiáng)。PCI總線的開(kāi)發(fā)一般可以有兩種方案實(shí)現(xiàn):一種是用FPGA實(shí)現(xiàn);另一種則是使用專用的PCI接口芯片。為節(jié)省時(shí)間本系統(tǒng)選擇專用芯片CY09449進(jìn)行開(kāi)發(fā)。該芯片采用3.3 V 單電源供電,兼容3V和5V 的PCI信號(hào)環(huán)境。CY09449的電源可由PCI槽引出,PCI槽可以提供3.3V、5V、12V電壓,在PCI槽有兩個(gè)引腳需特別注意:PRSNT1和PRSNT2,這兩個(gè)引腳接地和懸空的4種組合直接決定PCI卡的功率。CY 09449在使用時(shí),某些引腳要加阻值為1k?~1Ok?的下拉或上拉電阻。根據(jù)本系統(tǒng)地具體情況在該設(shè)計(jì)中,SCL、SDA、ALE、/BE[2]、RDY_IN引腳加上拉電阻, TEST_MODE引腳加下拉電阻。
結(jié)語(yǔ)
基于PCI總線,配以數(shù)據(jù)處理能力強(qiáng)大的DSP設(shè)計(jì)的步進(jìn)電機(jī)運(yùn)動(dòng)控制卡,在開(kāi)放式數(shù)控系統(tǒng)中能夠發(fā)揮出理想的運(yùn)動(dòng)控制性能。隨著數(shù)控系統(tǒng)的普及和產(chǎn)品檔次的提高,這種運(yùn)動(dòng)控制卡將會(huì)有廣泛的應(yīng)用前景。
責(zé)任編輯:gt
-
dsp
+關(guān)注
關(guān)注
552文章
7959瀏覽量
347932 -
芯片
+關(guān)注
關(guān)注
452文章
50215瀏覽量
420951 -
工控機(jī)
+關(guān)注
關(guān)注
10文章
1668瀏覽量
50392
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論