劉繼磊,毛立峰,陶 俊,張松飛
(中國船舶重工第七〇四研究所,上海200031)
目前無法通過速度控制來實現伺服系統的精確定位,需要結合位置控制方式。利用上位控制裝置發出特定頻率和個數的脈沖指令來控制電機的轉速和轉過的角度,將光電編碼器的輸出信號作為伺服系統的位置反饋信號,根據編碼器輸出的脈沖數對電機進行精確定位。對于傳動比一定的交流伺服系統,伺服電機每轉一圈產生的機械軸位移量是一定的,當指令脈沖對應的機械軸位移量和位置反饋脈沖對應的機械軸位移量不一致時,需要利用電子齒輪進行調整[1]。
在伺服系統中,電子齒輪比是指來自于電機編碼器反饋脈沖與上位機指令脈沖的一個比值。它可以對上位機發出的脈沖頻率進行放大或者縮小,通過電子齒輪比的參數值設定,可以在機械齒輪外部設定速度指令不變的情況下,靈活地改變電機的速比,以匹配用戶實際應用。由于它是通過電子器件(本文采用FPGA)來實現的類似機械齒輪的速比變化,所以稱為電子齒輪比[1]。可以按照公式ΔL =ΔM×A/B(其中A/B 為電子齒輪比,ΔL 和ΔM 分別為指令脈沖當量和反饋脈沖當量)進行計算,這里的ΔM=(其中W 為絲杠螺距,PG為光電編碼器線數)。帶有電子齒輪比的交流伺服系統結構圖,如圖1 所示。

圖1 帶有電子齒輪比的交流伺服系統結構圖
圖1 中,在機械結構的減速比和編碼器脈沖數一定的情況下,上位控制裝置(CNC:計算機數字控制)發出的指令脈沖,經過相關處理后,借助電子齒輪比來匹配交流伺服電機發出的脈沖數與機械最小移動量,實現電機的高精度運動控制[2]。
在交流伺服應用系統中,來自上位控制裝置(CNC)的位置指令脈沖[3-4]主要是:“脈沖+ 方向”、“正反兩向CW+CCW 脈沖”(其中CW 是從伺服電機的軸向觀察,順時針方向旋轉,定義為反方向;CCW 是從伺服電機的軸向觀察,逆時針方向旋轉,定義為正方向)、“A,B 兩相正交脈沖”。如圖2 所示。

圖2 位置指令脈沖的三種常見形式
圖2 中的三種不同形式的指令脈沖都代表電機的轉向和電機轉過的角度,其中只有“脈沖+方向”的指令形式可以進行計數,因此需將其余兩種指令脈沖轉換成“脈沖+方向”形式,這部分工作可由FPGA 來完成,通過硬件描述語言(VHDL)進行實現。有關位置指令脈沖處理方案如圖3 所示。

圖3 位置指令脈沖處理方案簡圖
由圖3 可知,三種形式的脈沖指令通過輸入指令選擇模塊及鑒相模塊,最終轉化為“脈沖+方向”的指令形式。
由前文可知,電子齒輪比可以用來匹配位置指令脈沖數與機械負載軸最小移動量的對應關系,其數學表達式A/B 中的A 和B 分別代表倍頻系數和分頻系數,上位機給定的脈沖信號經過A 倍頻和B分頻后就可以得到和輸入信號成某種對應關系的輸出信號,該輸出信號對應負載軸相應的移動量。因為A 和B 都是整數(范圍一般在1 ~65 535 之間),所以電子齒輪比的實現相對小數分倍頻要容易許多。在全數字交流伺服應用系統中,電子齒輪比應滿足條件:0.01≤100。關于整數分頻倍頻方法,現簡要介紹如下:
鑒于伺服系統中脈沖信號常常是等占空比的,這里僅對等占空比的整數分頻的實現方法進行簡要介紹。針對等占空比偶數分頻器的設計,常采用以下方法:用模為-1(其中N 代表分頻系數)的計數器對待分頻脈沖進行計數。當從0 計數到-1時,輸出脈沖信號翻轉,同時對計數器進行置位,當下一個脈沖到來時重新開始計數,如此循環,即可得到N 分頻器。針對等占空比奇數分頻器的設計,需要設計兩個計數器,一個計數器采用分頻時鐘信號的上升沿觸發,另一個計數器采用分頻時鐘信號的下降沿觸發,對得到的兩組脈沖信號,進行邏輯或運算,就可得到一組所需的等占空比奇數分頻信號[5]。
在數字電路設計中,可采用除法器解決整數倍頻問題。有關除法器的FPGA 實現方法可參考文獻[6]。關于整數倍頻的基本方法如下:
在需倍頻信號pulse_mid 的高電平階段,對時鐘信號sysclk(其頻率遠大于pulse_mid)進行計數,得到時鐘信號sysclk 的周期個數cnt;采用除法器得到cnt0 =cnt/倍頻系數;設置一個初始電平為高的信號sign,用時鐘信號sysclk 計數到cnt0,同時信號sign 電平翻轉,在信號sign 的低電平階段重新對時鐘信號sysclk 計數到cnt0,電平再次翻轉,如此循環就可得到所需的倍頻信號pulse_midb。
以電子齒輪比為4/3(這里A =4,B =3;下文程序中的m 就是這里的A,n 就是這里的B)的設計為例來給出基于FPGA 的電子齒輪比一般設計方法。采用硬件描述語言VHDL,進行模塊化程序設計[5,7](注意:程序在各進程之間是并行執行的,在各進程的內部是順序執行的),主要包括:位置指令處理模塊、倍頻模塊、分頻模塊三部分。這里重點介紹位置指令處理模塊和倍頻模塊。
3.3.1 位置指令處理模塊
上文提到,除了可被計數器計數的“脈沖+方向”指令形式外,上位機指令還可能是“A,B 兩相正交脈沖”或者“正反兩相CW +CCW 脈沖”,如圖3所示。必須將“A,B 兩相正交脈沖”或者“正反兩相CW+CCW 脈沖”轉化為“脈沖+ 方向”的指令形式,按照前面提到的方案進行轉換,具體實現的流程圖如圖4 所示。

圖4 位置指令脈沖處理流程圖
圖4 中,當系統時鐘信號sysclk 上升沿到來時,進程1 是通過軟件設置mode 信號對上位機可能輸入的三種指令脈沖進行選擇;進程2 是對來自上位機的三種可能輸入脈沖進行處理(其中“脈沖+方向”形式的輸入指令不需進行處理)。由于A,B 兩相脈沖相位相差90°,可以根據A,B 兩相脈沖的相位變化關系對電機進行鑒相[7-8];關于“正反兩向CW +CCW”指令脈沖,由于在同一時刻CW、CCW 信號電平不同時為高,可以通過RS 觸發器實現鑒相[7-8]。
3.3.2 倍頻模塊
位置指令脈沖經過上面的相關處理,得到了統一的“脈沖+方向”形式,下面要對選擇到的脈沖信號進行倍頻處理,這里要實現脈沖信號的4 倍頻,根據上述介紹的整數倍頻的相關方法,運用VHDL 語言進行程序設計,部分程序如下。

進程3 的主要功能是:在待倍頻脈沖pulse_mid的高電平處對高頻脈沖(此處高頻脈沖為系統時鐘sysclk,此脈沖的頻率應該遠大于pulse_mid)進行計數,設置一信號sign 初始為高電平(1 有效),在pulse_mid 變為低電平的時刻,即pulse_mid 的下降沿將計數值保存,此時的計數值cnt_pm 作為下面除法器的被除數dividend,同時在pulse_mid 下降沿將計數值cnt_pm 清零,為下次在pulse_mid 的高電平重新計數做準備。

進程4 的主要功能是除法器。整體上理解為上一步計數值cnt_pm 除以m(倍頻系數)得到一個商,該商作為進程5 產生倍頻脈沖的基準。

進程5 的主要功能是以除法器得到的商為基準產生倍頻脈沖。具體實現方法:當高頻脈沖(系統時鐘sysclk)的上升沿到來時,對高頻脈沖進行計數到進程3 產生的商quo,每計數到商quo 時,電平就進行反轉,最終產生四倍頻脈沖信號pulse_midb。
3.3.3 分頻模塊
采用上述介紹的奇數分頻的方法,運用VHDL語言進行程序設計,對上述四倍頻脈沖信號pulse_midb 進行三分頻(n=3)。
在Xilinx 型FPGA 開發環境ISE 9. 1i 下進行VHDL 程序設計,在程序中設置電子齒輪比的分子A 為4(程序中m =4),分母B 為3(程序中n =3),經過編譯和分析綜合,利用專業軟件Modelsim XEIII 6.2C 進行仿真,得到如圖5 所示的仿真波形。

圖5 電子齒輪比為4/3 的仿真波形圖
由圖5 可知,上位機發給FPGA 的三種位置指令均被轉化為“脈沖+方向”的指令形式,并且在三種模式下,輸出信號脈沖的頻率是對應的輸入脈沖頻率的4/3 倍,從而證明了基于FPGA 的電子齒輪比為4/3 的數字實現的正確性。為進一步論證本文提出的基于FPGA 的電子齒輪比設計方案的正確性,在交流伺服系統硬件板卡上(如圖6 所示)進行相關實驗,可得如圖7 所示的實驗波形圖。

圖6 交流伺服系統硬件板卡實物連接圖

圖7 電子齒輪比為4/3 的實驗波形(截圖)
由圖7 可知,輸入周期為400 μs 的A,B 兩相正交脈沖(如圖7(a)所示),經過電子齒輪比為4/3 的模塊處理后,最終輸出周期為300 μs 的兩相正交脈沖(如圖7(b)所示),完成了輸入脈沖與輸出脈沖之間的匹配,從而有力證明了本文所提出的基于FPGA 的電子齒輪比設計與實現方案的正確性與可行性。
本文在介紹電子齒輪比功能的基礎上,利用FPGA 實現了將伺服系統中三種常見上位機位置指令脈沖轉換為可被直接計數的指令形式,尤其是以電子齒輪比4/3 的數字實現為例,詳細講述了基于FPGA 電子齒輪比設計與實現的一般方法,經過仿真和試驗,結果表明:本文提出的電子齒輪比設計與實現方法是完全正確可行的,具有一定的工程價值。
[1] 胡慶波,呂征宇.全數字伺服系統中位置環和電子齒輪的設計[J].電源技術,2004,7(6):348-351.
[2] 李寧,徐俊. 電子齒輪原理及其實現[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 在交流伺服系統中的應用[D]. 武漢:華中科技大學,2008.
[5] 盧毅.VHDL 與數字電路設計[M].北京:科學出版社,2001.04.
[6] 周殿鳳,王俊華.基于FPGA 的32 位除法器設計[J]. 信息化研究,2010,36(3):26-28.
[7] 張寶泉,楊世興,趙永秀.編碼器倍頻、鑒相電路在FPGA 中的實現[J].工礦自動化,2005(4):69-71.
[8] 王冰,王新民,劉繼磊,等.電子齒輪比在FPGA 中的實現[J].微電機,2011,44(7):104-106,115.