劉繼磊,毛立峰,陶 俊,張松飛
(中國船舶重工第七〇四研究所,上海200031)
目前無法通過速度控制來實現(xiàn)伺服系統(tǒng)的精確定位,需要結(jié)合位置控制方式。利用上位控制裝置發(fā)出特定頻率和個數(shù)的脈沖指令來控制電機的轉(zhuǎn)速和轉(zhuǎn)過的角度,將光電編碼器的輸出信號作為伺服系統(tǒng)的位置反饋信號,根據(jù)編碼器輸出的脈沖數(shù)對電機進行精確定位。對于傳動比一定的交流伺服系統(tǒng),伺服電機每轉(zhuǎn)一圈產(chǎn)生的機械軸位移量是一定的,當指令脈沖對應的機械軸位移量和位置反饋脈沖對應的機械軸位移量不一致時,需要利用電子齒輪進行調(diào)整[1]。
在伺服系統(tǒng)中,電子齒輪比是指來自于電機編碼器反饋脈沖與上位機指令脈沖的一個比值。它可以對上位機發(fā)出的脈沖頻率進行放大或者縮小,通過電子齒輪比的參數(shù)值設定,可以在機械齒輪外部設定速度指令不變的情況下,靈活地改變電機的速比,以匹配用戶實際應用。由于它是通過電子器件(本文采用FPGA)來實現(xiàn)的類似機械齒輪的速比變化,所以稱為電子齒輪比[1]。可以按照公式ΔL =ΔM×A/B(其中A/B 為電子齒輪比,ΔL 和ΔM 分別為指令脈沖當量和反饋脈沖當量)進行計算,這里的ΔM=(其中W 為絲杠螺距,PG為光電編碼器線數(shù))。帶有電子齒輪比的交流伺服系統(tǒng)結(jié)構圖,如圖1 所示。
圖1 帶有電子齒輪比的交流伺服系統(tǒng)結(jié)構圖
圖1 中,在機械結(jié)構的減速比和編碼器脈沖數(shù)一定的情況下,上位控制裝置(CNC:計算機數(shù)字控制)發(fā)出的指令脈沖,經(jīng)過相關處理后,借助電子齒輪比來匹配交流伺服電機發(fā)出的脈沖數(shù)與機械最小移動量,實現(xiàn)電機的高精度運動控制[2]。
在交流伺服應用系統(tǒng)中,來自上位控制裝置(CNC)的位置指令脈沖[3-4]主要是:“脈沖+ 方向”、“正反兩向CW+CCW 脈沖”(其中CW 是從伺服電機的軸向觀察,順時針方向旋轉(zhuǎn),定義為反方向;CCW 是從伺服電機的軸向觀察,逆時針方向旋轉(zhuǎn),定義為正方向)、“A,B 兩相正交脈沖”。如圖2 所示。
圖2 位置指令脈沖的三種常見形式
圖2 中的三種不同形式的指令脈沖都代表電機的轉(zhuǎn)向和電機轉(zhuǎn)過的角度,其中只有“脈沖+方向”的指令形式可以進行計數(shù),因此需將其余兩種指令脈沖轉(zhuǎn)換成“脈沖+方向”形式,這部分工作可由FPGA 來完成,通過硬件描述語言(VHDL)進行實現(xiàn)。有關位置指令脈沖處理方案如圖3 所示。
圖3 位置指令脈沖處理方案簡圖
由圖3 可知,三種形式的脈沖指令通過輸入指令選擇模塊及鑒相模塊,最終轉(zhuǎn)化為“脈沖+方向”的指令形式。
由前文可知,電子齒輪比可以用來匹配位置指令脈沖數(shù)與機械負載軸最小移動量的對應關系,其數(shù)學表達式A/B 中的A 和B 分別代表倍頻系數(shù)和分頻系數(shù),上位機給定的脈沖信號經(jīng)過A 倍頻和B分頻后就可以得到和輸入信號成某種對應關系的輸出信號,該輸出信號對應負載軸相應的移動量。因為A 和B 都是整數(shù)(范圍一般在1 ~65 535 之間),所以電子齒輪比的實現(xiàn)相對小數(shù)分倍頻要容易許多。在全數(shù)字交流伺服應用系統(tǒng)中,電子齒輪比應滿足條件:0.01≤100。關于整數(shù)分頻倍頻方法,現(xiàn)簡要介紹如下:
鑒于伺服系統(tǒng)中脈沖信號常常是等占空比的,這里僅對等占空比的整數(shù)分頻的實現(xiàn)方法進行簡要介紹。針對等占空比偶數(shù)分頻器的設計,常采用以下方法:用模為-1(其中N 代表分頻系數(shù))的計數(shù)器對待分頻脈沖進行計數(shù)。當從0 計數(shù)到-1時,輸出脈沖信號翻轉(zhuǎn),同時對計數(shù)器進行置位,當下一個脈沖到來時重新開始計數(shù),如此循環(huán),即可得到N 分頻器。針對等占空比奇數(shù)分頻器的設計,需要設計兩個計數(shù)器,一個計數(shù)器采用分頻時鐘信號的上升沿觸發(fā),另一個計數(shù)器采用分頻時鐘信號的下降沿觸發(fā),對得到的兩組脈沖信號,進行邏輯或運算,就可得到一組所需的等占空比奇數(shù)分頻信號[5]。
在數(shù)字電路設計中,可采用除法器解決整數(shù)倍頻問題。有關除法器的FPGA 實現(xiàn)方法可參考文獻[6]。關于整數(shù)倍頻的基本方法如下:
在需倍頻信號pulse_mid 的高電平階段,對時鐘信號sysclk(其頻率遠大于pulse_mid)進行計數(shù),得到時鐘信號sysclk 的周期個數(shù)cnt;采用除法器得到cnt0 =cnt/倍頻系數(shù);設置一個初始電平為高的信號sign,用時鐘信號sysclk 計數(shù)到cnt0,同時信號sign 電平翻轉(zhuǎn),在信號sign 的低電平階段重新對時鐘信號sysclk 計數(shù)到cnt0,電平再次翻轉(zhuǎn),如此循環(huán)就可得到所需的倍頻信號pulse_midb。
以電子齒輪比為4/3(這里A =4,B =3;下文程序中的m 就是這里的A,n 就是這里的B)的設計為例來給出基于FPGA 的電子齒輪比一般設計方法。采用硬件描述語言VHDL,進行模塊化程序設計[5,7](注意:程序在各進程之間是并行執(zhí)行的,在各進程的內(nèi)部是順序執(zhí)行的),主要包括:位置指令處理模塊、倍頻模塊、分頻模塊三部分。這里重點介紹位置指令處理模塊和倍頻模塊。
3.3.1 位置指令處理模塊
上文提到,除了可被計數(shù)器計數(shù)的“脈沖+方向”指令形式外,上位機指令還可能是“A,B 兩相正交脈沖”或者“正反兩相CW +CCW 脈沖”,如圖3所示。必須將“A,B 兩相正交脈沖”或者“正反兩相CW+CCW 脈沖”轉(zhuǎn)化為“脈沖+ 方向”的指令形式,按照前面提到的方案進行轉(zhuǎn)換,具體實現(xiàn)的流程圖如圖4 所示。
圖4 位置指令脈沖處理流程圖
圖4 中,當系統(tǒng)時鐘信號sysclk 上升沿到來時,進程1 是通過軟件設置mode 信號對上位機可能輸入的三種指令脈沖進行選擇;進程2 是對來自上位機的三種可能輸入脈沖進行處理(其中“脈沖+方向”形式的輸入指令不需進行處理)。由于A,B 兩相脈沖相位相差90°,可以根據(jù)A,B 兩相脈沖的相位變化關系對電機進行鑒相[7-8];關于“正反兩向CW +CCW”指令脈沖,由于在同一時刻CW、CCW 信號電平不同時為高,可以通過RS 觸發(fā)器實現(xiàn)鑒相[7-8]。
3.3.2 倍頻模塊
位置指令脈沖經(jīng)過上面的相關處理,得到了統(tǒng)一的“脈沖+方向”形式,下面要對選擇到的脈沖信號進行倍頻處理,這里要實現(xiàn)脈沖信號的4 倍頻,根據(jù)上述介紹的整數(shù)倍頻的相關方法,運用VHDL 語言進行程序設計,部分程序如下。
進程3 的主要功能是:在待倍頻脈沖pulse_mid的高電平處對高頻脈沖(此處高頻脈沖為系統(tǒng)時鐘sysclk,此脈沖的頻率應該遠大于pulse_mid)進行計數(shù),設置一信號sign 初始為高電平(1 有效),在pulse_mid 變?yōu)榈碗娖降臅r刻,即pulse_mid 的下降沿將計數(shù)值保存,此時的計數(shù)值cnt_pm 作為下面除法器的被除數(shù)dividend,同時在pulse_mid 下降沿將計數(shù)值cnt_pm 清零,為下次在pulse_mid 的高電平重新計數(shù)做準備。
進程4 的主要功能是除法器。整體上理解為上一步計數(shù)值cnt_pm 除以m(倍頻系數(shù))得到一個商,該商作為進程5 產(chǎn)生倍頻脈沖的基準。
進程5 的主要功能是以除法器得到的商為基準產(chǎn)生倍頻脈沖。具體實現(xiàn)方法:當高頻脈沖(系統(tǒng)時鐘sysclk)的上升沿到來時,對高頻脈沖進行計數(shù)到進程3 產(chǎn)生的商quo,每計數(shù)到商quo 時,電平就進行反轉(zhuǎn),最終產(chǎn)生四倍頻脈沖信號pulse_midb。
3.3.3 分頻模塊
采用上述介紹的奇數(shù)分頻的方法,運用VHDL語言進行程序設計,對上述四倍頻脈沖信號pulse_midb 進行三分頻(n=3)。
在Xilinx 型FPGA 開發(fā)環(huán)境ISE 9. 1i 下進行VHDL 程序設計,在程序中設置電子齒輪比的分子A 為4(程序中m =4),分母B 為3(程序中n =3),經(jīng)過編譯和分析綜合,利用專業(yè)軟件Modelsim XEIII 6.2C 進行仿真,得到如圖5 所示的仿真波形。
圖5 電子齒輪比為4/3 的仿真波形圖
由圖5 可知,上位機發(fā)給FPGA 的三種位置指令均被轉(zhuǎn)化為“脈沖+方向”的指令形式,并且在三種模式下,輸出信號脈沖的頻率是對應的輸入脈沖頻率的4/3 倍,從而證明了基于FPGA 的電子齒輪比為4/3 的數(shù)字實現(xiàn)的正確性。為進一步論證本文提出的基于FPGA 的電子齒輪比設計方案的正確性,在交流伺服系統(tǒng)硬件板卡上(如圖6 所示)進行相關實驗,可得如圖7 所示的實驗波形圖。
圖6 交流伺服系統(tǒng)硬件板卡實物連接圖
圖7 電子齒輪比為4/3 的實驗波形(截圖)
由圖7 可知,輸入周期為400 μs 的A,B 兩相正交脈沖(如圖7(a)所示),經(jīng)過電子齒輪比為4/3 的模塊處理后,最終輸出周期為300 μs 的兩相正交脈沖(如圖7(b)所示),完成了輸入脈沖與輸出脈沖之間的匹配,從而有力證明了本文所提出的基于FPGA 的電子齒輪比設計與實現(xiàn)方案的正確性與可行性。
本文在介紹電子齒輪比功能的基礎上,利用FPGA 實現(xiàn)了將伺服系統(tǒng)中三種常見上位機位置指令脈沖轉(zhuǎn)換為可被直接計數(shù)的指令形式,尤其是以電子齒輪比4/3 的數(shù)字實現(xiàn)為例,詳細講述了基于FPGA 電子齒輪比設計與實現(xiàn)的一般方法,經(jīng)過仿真和試驗,結(jié)果表明:本文提出的電子齒輪比設計與實現(xiàn)方法是完全正確可行的,具有一定的工程價值。
[1] 胡慶波,呂征宇.全數(shù)字伺服系統(tǒng)中位置環(huán)和電子齒輪的設計[J].電源技術,2004,7(6):348-351.
[2] 李寧,徐俊. 電子齒輪原理及其實現(xiàn)[J]. 電氣傳動,2002,32(3):53-55.
[3] SUGIMOTO H,ICHIKAWA T,HOSOI K. Magnetic pole position detection method and control of a brushless DC servomotor with incremental encoder[J]. Electrical Engineer in Japan,2003,145(4):64-77.
[4] 李海春.FPGA/CPLD 在交流伺服系統(tǒng)中的應用[D]. 武漢:華中科技大學,2008.
[5] 盧毅.VHDL 與數(shù)字電路設計[M].北京:科學出版社,2001.04.
[6] 周殿鳳,王俊華.基于FPGA 的32 位除法器設計[J]. 信息化研究,2010,36(3):26-28.
[7] 張寶泉,楊世興,趙永秀.編碼器倍頻、鑒相電路在FPGA 中的實現(xiàn)[J].工礦自動化,2005(4):69-71.
[8] 王冰,王新民,劉繼磊,等.電子齒輪比在FPGA 中的實現(xiàn)[J].微電機,2011,44(7):104-106,115.