摘 要: 在交流伺服系統(tǒng)中,準確可靠地獲取編碼器信號是整個閉環(huán)控制的關鍵;而編碼器信號常受外界干擾,會產生誤碼脈沖,給伺服控制帶來了偏差。在分析了增量式光電編碼器的原理及誤碼產生原因、總結編碼器信號處理方法后,設計了一種基于CPLD的具有編碼器差分信號輸入、誤碼濾除和鑒相功能的電路,提高了編碼器信號檢查的可靠性,并得到了很好的實際應用。具體分析了濾除誤碼原理,并給出了設計原理圖和Quartus II下的仿真結果。
關鍵詞: CPLD;增量式編碼器;干擾;誤碼
在伺服系統(tǒng)中,編碼器反饋信號對伺服閉環(huán)控制系統(tǒng)至關重要,不管是速度控制模式, 還是位置控制模式,實時、可靠地獲取編碼器反饋信號對整個閉環(huán)系統(tǒng)的精度和消除系統(tǒng)滯后都有著至關重要的作用。假定伺服周期為1 ms,那么需要每隔1 ms計算出編碼器反饋脈沖的個數(shù)及其方向。編碼器信號直接影響著整個控制系統(tǒng)的精度和可靠性,整個系統(tǒng)的控制精度不可能高于編碼器檢測元件的精度。
參考文獻[1]在設計了編碼器信號處理時,實現(xiàn)了編碼器輸出信號的四倍頻、鑒相,但編碼器無法濾除誤碼。實際應用中,編碼器干擾和抖動客觀存在,誤碼的產生影響了檢測的可靠性。在編碼器的抗干擾、誤碼濾除設計中,常出現(xiàn)只能濾除某一相誤碼或換向丟脈沖現(xiàn)象。參考文獻[2]給出的設計在電機高低速切換頻繁時,單穩(wěn)態(tài)觸發(fā)器的脈沖寬度難以確定,計數(shù)脈沖容易丟失。以往設計處理的編碼器輸出信號都以集電極信號為對象,而實際上編碼器輸出大多為差分信號。本文利用CPLD設計了一種可靠的用于增量式編碼器輸出信號的檢測電路,能直接處理編碼器輸出的差分信號,其結構簡單,性能可靠,提高了控制系統(tǒng)的精度與可靠性。
1 增量式光電編碼器結構及原理
增量式編碼器因結構簡單、響應迅速、性價比高等優(yōu)點而被廣泛使用。增量式光電編碼器利用光電轉換原理將轉子的角信息轉換成脈沖信號,每輸出一個脈沖在對應方向上產生一個增量的角度位移,通過統(tǒng)計脈沖信號的數(shù)量和方向計算旋轉的角度和位置。由于采用相對編碼,編碼器輸出的位置數(shù)據(jù)是相對的,因此,系統(tǒng)每次掉電后旋轉角度數(shù)據(jù)會丟失,需重新復位。典型的增量式光電編碼器由光源、光柵碼盤、光敏元件和信號處理電路組成。如圖1所示,碼盤上刻有3條碼道,由外向內分別是A、B、Z。在A、B碼道上,等間距地刻有透光的縫隙(用白色表示);兩條碼道上相鄰的縫隙互錯半個縫寬(1/4節(jié)距),所以正常情況下,A相與B相是一組正交脈沖信號,即相位相差90°。在碼道Z上只開有一個縫隙,每轉輸出1個脈沖,用來表示碼盤的零位、校正每轉編碼器產生的脈沖個數(shù),將脈沖誤差控制在每一轉之內,避免累積誤差。軸承轉動時,光源光束交替通過碼盤上的縫隙,對應光敏元件交替接收光源輸出的高電平或低電平信號,電信號經(jīng)編碼器內部處理電路放大、整形后輸出脈沖序列。圖2為碼盤展開圖(黑色為不透光部分)及碼盤順時針旋轉下對應的電信號輸出,此時A相超前B相90°,若逆時針旋轉則B相超前A相90°。由于增量式編碼器的固有結構,使得其輸出信號不能自動判別碼盤的旋轉方向,需經(jīng)硬件電路或軟件處理后才能完成鑒相工作。
目前,大多數(shù)編碼器的輸出信號是便于遠距離傳輸?shù)牟罘中盘?即A+、A-、 B+、B-、Z+、Z-),且分辨率很高。比如,安川SGMJV-08ADD6S電機編碼器輸出為20 bit脈沖信號,即電機每旋轉1圈, 編碼器每相輸出220=1 048 576個脈沖[3],運動控制器無法直接處理這些脈沖,一般將脈沖序列經(jīng)驅動器分頻并轉換成集電極信號后反饋給控制器處理。本文將在CPLD中完成差分信號轉集電極信號。
2 增量式光電編碼器誤碼的產生
碼盤縫隙邊緣是編碼器輸出信號產生抖動誤碼脈沖的根源,這是由編碼器固有物理結構所致。在安裝基座的機械振動下,編碼器碼盤振動或轉軸不穩(wěn)都會引起輸出誤碼;電機超低速運行或正反轉頻繁換向時,碼盤縫隙邊沿附近會產生小幅度晃動,也會產生干擾脈沖,導致計數(shù)錯誤。圖3為編碼器在圖2的S1、S2、S3、S3和S4處,依次出現(xiàn)寬度小于半個正常脈沖寬度的干擾波形。當抖動產生時,A、B相脈沖相位不再是固定的90°關系,脈沖寬度和周期隨抖動的不同而不同。本文將從編碼器的鑒相方法入手,濾除誤碼脈沖,提取有效的計數(shù)脈沖信號。
3 光電編碼器脈沖處理方法
常用的編碼器信號處理方法有:
(1)基于硬件電路。有觸發(fā)器、邏輯門等,比如通過74系列芯片、RC電路搭建硬件電路,實現(xiàn)脈沖的鑒相、計數(shù)。
?。?)基于軟件算法。直接將編碼器輸出信號送至微處理器,由軟件算法完成誤碼濾除、倍頻、鑒相和計數(shù)任務。
(3)硬件和軟件相結合。一般先由硬件完成倍頻、鑒相,再由軟件完成計數(shù)。
基于硬件處理速度響應快,但系統(tǒng)器件增多,抗干擾性和可靠性差?;谲浖惴m實現(xiàn)簡單,卻對處理器要求高。例如參考文獻[4]利用“同一邊沿判斷原則”,采用某相上升沿和下降沿時刻根據(jù)另一相電平的變化情況來消除抖動,很好地濾除了誤碼,但這一算法需頻繁判斷上升沿和下降沿,軟件時間消耗大。參考文獻[5]采用“散轉地址的方法”,將所有的前一個A、B電平狀態(tài)作為散轉地址的高2 bit,所有后一個A、B電平狀態(tài)作為散轉地址的低2 bit,合成4 bit,排列組合出16種狀態(tài)。由于每種狀態(tài)對應了編碼器的轉相和計數(shù)脈沖是否有效,因此加快了軟件執(zhí)行速度,但同時增加了存儲空間。
本文采用軟件和硬件結合的方法,由CPLD完成信號轉換、誤碼濾除、倍頻和鑒相等工作,最終將差分編碼器信號轉換為脈沖/方向信號。CPLD具有可用門電路多、處理速度快、可靠性和性價比高等優(yōu)點;并且,將誤碼信號轉換、誤碼濾除等電路集于同一芯片,提高了系統(tǒng)的通用性和靈活性。同時,CPLD支持可編程,方便現(xiàn)場對電路進行升級。
4 CPLD濾除編碼器抖動及仿真結果
4.1誤碼濾除原理
由編碼器固有結構可知,A、B相電平不能同時突變。假設以A相為計數(shù)脈沖參考, 在A相脈沖相鄰兩個跳變沿時刻,比較B相信號電平邏輯,若B相電平不同,則認為編碼器輸出是正常計數(shù)脈沖信號,使能計數(shù)端對A相脈沖計數(shù),此時B相有誤碼不影響脈沖計數(shù);若B相電平相同,則認為A相出現(xiàn)了誤碼,不予計數(shù)。依據(jù)A相上升沿和下降沿時刻B相電平的高低,判斷A、B相位關系,若A相上升沿處B為低電平,則A相超前B相;若A相下降沿處B相為低電平,則B相超前A相。A、B脈沖相異或產生倍頻脈沖,作為觸發(fā)器(上升沿觸發(fā))的時鐘信號,A相脈沖經(jīng)觸發(fā)器輸出計數(shù)A信號,如圖4所示,計數(shù)A濾除了A相中的誤碼,將其作為計數(shù)脈沖。反之,以B相為參考可得同樣結果。
4.2 編碼器鑒相和濾除誤碼設計
根據(jù)以上分析,采用圖形與語言結合的方法進行設計,內部的邏輯子模塊采用VHDL語言實現(xiàn)。頂層模塊結構如圖5所示,信號A+、A-和B+、B-經(jīng)DIFF4_2模塊轉換為A、B集電極信號,B信號經(jīng)2個D觸發(fā)器在A信號上升沿和下降沿處相“異或”,“異或”結果作為Counter的使能端并配合兩個“與門”完成A、B相位的判斷;A、B信號直接“異或”產生倍頻時鐘信號,濾除誤碼恢復正常的A相脈沖,提供可靠計數(shù)脈沖。Counter模塊用于控制脈沖輸入方向,其輸出為編碼器旋轉方向信號和計數(shù)脈沖信號。
A與B分別是 A1、A2和B1、B2差分轉換后的集電極信號,DIR和PULSE_OUT為編碼器旋轉方向和計數(shù)脈沖輸出。根據(jù)DIR可判斷編碼器正反轉,當A超前B時,DIR為低電平;當B超前A時,DIR始終為高電平。PULSE_OUT輸出為濾除誤碼后的A相波形,作為計數(shù)脈沖。主要VHDL程序如下:
comb1<=A1&A2;
comb2<=B1&B2;
comb<=EN&CLR;
begin
case comb1 is
when "10" => A<=′1′;
when "01" => A<=′0′;
when others=> A<=′Z′;
end case;
case comb2 is
when "10" => B<=′1′;
when "01" => B<=′0′;
when others=> B<=′Z′;
end case;
case comb is
when"11"=> DIR<=′0′;PULSE_OUT<=′0′;
when "10" =>
IF rising_edge(CLK) AND AB<=′1′
THEN DIR<=′0′; PULSE_OUT <= CLK;
END IF;
IF rising_edge(CLK) AND BA<=′1′
THEN DIR<=′0′; PULSE_OUT <= CLK;
END IF;
when others => DIR<=′Z′; PULSE_OUT <=′Z′;
end case;
4.3實驗結果
本文CPLD芯片選用與編碼器輸出電平兼容的Altera公司MAX3000A系列EPM7128A,編譯環(huán)境采用QuartusⅡ。其仿真分析結果如圖6所示,差分信號A1、A2和B1、B2轉換為了A、B相集電極信號;在A、B相信號出現(xiàn)干擾的情況下,輸出信號PULSE_OUT很好地恢復了正常A相脈沖信號,為后續(xù)處理器檢查提供了可靠脈沖源。
本文分析了編碼器誤碼產生原因,比較了編碼器信號處理方法,應用CPLD設計了一種具有編碼器差分信號轉換、誤碼濾除和鑒相功能的可靠電路,并在交流伺服系統(tǒng)中得到了很好的驗證。在系統(tǒng)出現(xiàn)較大抖動和干擾時,仍能獲得可靠的計數(shù)脈沖,提高了位置檢測精度和速度可靠性。
參考文獻
[1] 姬巖鵬,劉衛(wèi)東,徐建寧,等.交流伺服控制系統(tǒng)中脈沖抗干擾算法研究[J]. 微電機,2007,40(2):62-65.
[2] 崔曉紅,陳宏利.光電編碼器抗干擾防振動電路的設計[J].交通與計算機,2005,23(1):110-112.
[3] 株式會社. AC伺服驅動器∑-Ⅴ系列用戶手冊[S].安川電機,SIPC S800000 45C, 2009.
[4] 趙哲身. 光電旋轉編碼器的軟件鑒相及其使用技巧[J].自動化儀表,1998,19(2):17-18.
[5] 王子博. 編碼器四倍頻電路的單片機高速算法設計[J].控制與檢測,2007(11):73-74.