1 概述
現在的位置伺服系統一般采用所謂的“軟伺服”系統,使位置增益不很大,這樣系統容易穩定,并且增加一個閉環調速單元,速度環的增益很大。因此,很小的位置偏差就能產生很明顯的速度偏差,速度環就以很高的增益修正,從而使系統得到很高的位置分辨率[1]。作者在研制一種數控刨齒機時,設計并完成了單軸位置伺服系統,該系統采用半閉環結構,框圖如圖1所示。本文將結合該系統,闡述位置伺服系統的組成及硬件實現。
圖1 單軸位置控制系統的框圖
2 位置伺服系統的組成
在圖1中,位置控制器和速度控制器均由486個人微機編程實現。電機采用北京數控設備廠的FANUC-BESK(15型)直流伺服電機,并采用該廠的A06B-6054-H005作為功率驅動模塊。由于該速度控制單元是模擬系統,因此采用12位D/A轉換器,把微機根據控制算法輸出的數字量轉換為合適的模擬電壓,控制電機向減小位置偏差的方向轉動。位置反饋采用光電編碼器,分辨率為4000線/轉,經四倍頻電路,由可編程計數器8254記錄位置脈沖數,位置控制器則根據此脈沖數和指令脈沖數計算出速度指令電壓,再輸出
到一個12位D/A轉換器,即得到模擬的速度指令電壓。速度反饋也利用同一個光電編碼器和計數電路,速度控制器通過對位置求一階差分計算出實際轉速,然后輸出到另一個12位D/A轉換器,將得到的模擬電壓反饋至速度控制單元的速度反饋輸入端。實際轉速ω按ω=ΔN/Ts式求取,其中ΔN為在采樣周期內的位置脈沖增量,Ts為采樣周期,該系統取8毫秒。
作者編寫的CNC控制程序采用前、后臺軟件結構,前臺程序是一個中斷服務程序,由硬件實現8毫秒定時中斷,主要完成精插補和位置控制功能;后臺程序是一個循環運行程序,主要完成數據輸入、粗插補及其它輔助功能。
3 伺服系統的實現
數模轉換采用芯片DAC1210,為了不降低分辨率,用一個電子開關CD4052處理正負號,使數模轉換達到雙極性12位,為了提高驅動能力和抑制干擾,輸出采用集成運放OP07做成射極跟隨器的形式,電路如圖2所示。
圖2 雙極性12位D/A轉換
3.1 四倍頻器
四倍頻器[2,3]采用微分電路來實現,其抗干擾能力較差。作者設計了一種四倍頻器,采用積分型單穩態電路,如圖3所示。電路的工作原理:A、B兩路相位差90°的方波脈沖,電機正向轉動時,A領先B;電機反向轉動時,B領先A。該電路在A及A的反相-A和B及B的反相-B各接了一個積分型單穩態電路[4],在A的上升沿、下降沿分別產生一個短脈沖A′和-A′,在B的上升沿、下降沿分別產生一個短脈沖B′和-B′。當A為低電平時,Va為高電平,G2輸出為低電平;當A上升沿來到后,G1輸出為低電平,但由于電容兩端的電壓不能突變,所以在一段時間里Va仍在閾值電平之上,G2輸出為高電平,電路進入暫穩態。隨著電容的放電,Va不斷下降,當Va低于閾值電平時,G2輸出為低電平,待A回到低電平后,G1輸出為高電平,電容又開始充電,當Va恢復為高電平時,電路又達到穩態,為下一次上升沿的到來作好準備。由以上分析可知,A′的脈沖寬度TW等于電容開始放電到Va下降至閾值電平所經歷的時間,根據對RC電路暫態過程的分析,可知電容上的電壓Va放電時間由下式決定[4]:

(1)
式中 R′——RC電路放電回路的電阻
C′——RC電路放電回路的電容
VC(∞)——電容電壓的穩態值
VC(0)——電容電壓的初值
VC(t)——經過t時間放電后的電容電壓值
設LSTTL電路的輸出高電平為VOH,輸出低電平為VOL,VTH為閾值電平,R0為G1輸出低電平時的輸出電阻,將R′=R0+R、C′=C、VC(∞)=VOL、VC(0)=VOH、
VC(t)=VTH代入式(1)可得脈沖寬度TW為:

(2)
考慮到電路恢復時間,應使方波脈沖序列的周期為TW的7~8倍,這樣電路才能可靠地工作。可以據此選擇合適的電阻和電容。將得到的四個短脈沖序列A′、-A′、B′、-B′按圖3所示進行與或非的邏輯組合,在U1、U2的輸出端將產生表示正轉和反轉的四倍頻脈沖序列,如圖4所示。該電路有較好的抗干擾性能,因為高頻時容抗很小,而且脈沖經過二級與門的選擇。
圖3 積分型四倍頻計數電路
圖4 正、反轉四倍頻器脈沖波形(左:正轉 右:反轉)
3.2 脈沖計數電路與初值跳動
8254是與微機接口非常方便的可編程計數器,在方式2下計數器可自動重復計數,利用它的兩個
計數通道分別記錄正轉和反轉脈沖,在程序里讀入計數值并使二者相減,便可得到在采樣周期內的位置脈沖增量,給后續程序作進一步處理。作者在應用中發現8254有一個缺陷:對它進行初始化后,輸出鎖存器殘留有隨機數,這時程序讀數就會讀到這個隨機數,所以當第一個計數脈沖到來后,計數器開始從編程初值減一計數。當實際位置脈沖沒有來到時,程序里讀到的位置脈沖值為一隨機數,當有實際位置脈沖輸入到計數器后,采樣程序讀到的是正常的位置脈沖值,所以采樣程序第一次計算出的正轉或反轉脈沖數是不正確的,而隨后計數才進入正常狀態。第一次讀數的這一隨機性將引起系統的劇烈跳動,稱之為“初值跳動”。這種跳動對數控機床來說是不可接受的,必須予以消除。
作者通過程序處理解決了這一問題,其方法:初始化后先記錄下輸出鎖存器的起始內容,在采樣程序里把讀入輸出鎖存器的內容與此起始數值比較,若數值不變,說明沒有計數脈沖,位置增量為零;若數值發生變化,說明已有計數脈沖到來,經過程序計算得到第一次的位置增量。此后不再判別“初值跳動”,進行正常計數。解決“初值跳動”的程
序如下(用Turbo C語言實現):
實時采樣程序:
……
unsigned char cl,ch;
unsigned int clk0;
outportb(P8254+3,0xd6);
cl=inportb(P8254);
ch=inportb(p8254);
clk0=cl|(ch<<8);
if(clk0!=Old-clk0)first=1;
if(first)
{……
dsp0=……;
……
?。?
else
dsp0=0;
……
初始化程序:
……
unsigned char ch,cl;
cl=inportb(P8254);
ch=inportb(P8254);
Old-clk0=cl|(ch<<8);
……
有關變量的說明:
Old-clk0:輸出鎖存器的起始初值
clk0:輸出鎖存器的讀數值
first:判斷是否有第一個脈沖到來的邏輯變量
dsp0:位置增量
P8254:8254的片選地址
8254的第三個計數通道用來產生8毫秒的定時中斷,用來觸發中斷服務程序。
4 實驗與結論
該伺服系統采用4000線/轉的光電編碼器,再經過四倍頻電路,脈沖當量為δ=360°/(4000×4)=0.0225°/脈沖,位置控制算法采用前向差分控制算法,調整速度反饋的D/A轉換,使輸出滿足速度控制單元A06B-6054-H005的要求:3V/1000r/min,速度環反饋系數調節為1.2,電機能在不同的恒值速度指令電壓下平穩運轉,線性度為2000r/min/7V。
表不同速度下的穩態跟蹤誤差
經過實驗,調整位置增益為2,電機定位誤差為±8脈沖,即±0.18°。在不同的進給速度指令下,測得的穩態跟蹤誤差見下表。電機到工作臺有150∶1的減速比,上述性能指標已能滿足實際的加工要求。另外,經過軟件處理,系統徹底消除了“初值跳動”的現象。