《基于TMS320F28377D的伺服驅動系統(tǒng)調(diào)試》有獎問答--第三期/共四期
第三篇 使用eQEP模塊的電機速度環(huán)與位置環(huán)調(diào)試
伺服系統(tǒng)中速度環(huán)控制為整個閉環(huán)控制系統(tǒng)中的中間環(huán),位置環(huán)控制為最外環(huán)。速度環(huán)在伺服系統(tǒng)中主要起到控制轉速的作用。位置環(huán)是伺服系統(tǒng)的位置控制單元。
速度環(huán)的反饋元件一般為模擬測速機或編碼器,位置環(huán)的反饋元件一般為編碼器、光柵尺、感應同步器、旋轉變壓器等,根據(jù)不同的工作場合而決定。多數(shù)場合下都使用編碼器作為速度環(huán)與位置環(huán)的反饋元件。編碼器根據(jù)工作原理分為絕對值編碼器和增量式編碼器。我們在項目中使用2500線增量式光電編碼器,其輸出為正交脈沖A/B信號與原點脈沖Z信號。
TMS320F28377D集成了增強型正交編碼脈沖(eQEP)模塊,該模塊通過和增量式光電編碼器的A/B/Z信號相連,獲取高性能的運動和位置控制系統(tǒng)中電機的位置、方向和速度信息。TMS320F28377D有3個eQEP模塊,包含如下功能單元:
● 每個引腳的可編程輸入限制(GPIO MUX的一部分)
● 正交解碼器單元(QDU)
● 位置計數(shù)器和位置測量控制單元(PCCU)
● 用于低速測量的正交邊緣捕獲單元(QCAP)
● 速度/頻率測量的單位時基(UTIME)
● 用于檢測失速的看門狗定時器(QWDOG)
圖1展示包括電流環(huán)、速度環(huán)、位置環(huán)的全閉環(huán)框架。項目調(diào)試中,一般遵循先調(diào)試電流環(huán),再調(diào)試速度環(huán),最后調(diào)試位置環(huán)的步驟。依次確認各個環(huán)路的硬件與軟件正確工作。圖中速度環(huán)的輸出Spd_out、位置環(huán)的輸出SpeedRef、位置給定參考值PositionRef,與ADC模塊采集的實時電流Ds、eQEP模塊采集編碼器的實時速度Speed與位置MechTheta通過PID調(diào)節(jié)器實時調(diào)節(jié)誤差,增強系統(tǒng)的準確性與穩(wěn)定性。
圖1 全閉環(huán)框架
TI提供了數(shù)字電機控制軟件庫( Digital Motor Control),由為C2000電機控制而開發(fā)的C函數(shù)(或宏)組成。DMC庫幾乎覆蓋了所有與FOC電機控制相關模塊化的數(shù)學計算函數(shù),以及這些模塊的初始化函數(shù)。例如,圖1所示速度環(huán)中的速度計算函數(shù)SPEED_FR()。軟件設置中使用DMC庫可以很方便的調(diào)用這些函數(shù),使軟件控制流程更加清晰。
eQEP模塊在實際使用中應根據(jù)電機的具體參數(shù)進行初始化工作。例如我們項目使用8轉子極數(shù)與2500線制編碼器一體的電機,軟件初始化eQEP過程如下:
// Init QEP parameters
qep1.LineEncoder = 2500; // these are the number of slots in the QEP encoder
qep1.MechScaler = _IQ30(0.25/qep1.LineEncoder);
qep1.PolePairs = POLES/2; // POLES = 8
qep1.CalibratedAngle = 0;
QEP_INIT_MACRO(1,qep1)
其中QEP_INIT_MACRO函數(shù)中配置eQEP的QPOSMAX寄存器為4* qep1.LineEncoder,即eQEP采集編碼器輸出的正交脈沖信號最大計數(shù)值為10000。在FOC算法中位置計數(shù)(eQEP模塊的QPOSCNT寄存器)需要經(jīng)過如下?lián)Q算為機械角度。為適應不同的啟動位置,用CalibratedAngle表示首次檢測到編碼器原點信號時位置的計數(shù)鎖存值。
/* Compute the mechanical angle */
qep1.RawTheta = (*eQEP[1]).QPOSCNT + qep1.CalibratedAngle;
qep1.MechTheta = qep1.MechScaler * qep1.RawTheta;
PolePairs是電角度(ElecTheta)與機械角度(MechTheta)的倍數(shù)。在FOC算法中重要的PARK、IPARK及速度的計算需要電角度(ElecTheta)參數(shù)。其軟件實現(xiàn)如下:
/* Compute the electrical angle */
qep1.ElecTheta = (qep1.PolePairs*qep1.MechTheta) -floor(qep1.PolePairs*qep1.MechTheta);
速度環(huán)與位置環(huán)的PID調(diào)節(jié)使用了DMC庫標準函數(shù),如下所示。
// position PI regulator
pi_pos.Ref = rc1.SetpointValue;
pi_pos.Fbk = posEncMechTheta;
PI_POS_MACRO(pi_pos);
// speed PID regulator
pid_spd.term.Ref = pi_pos.Out;
pid_spd.term.Fbk = speed1.Speed;
PID_MACRO(pid_spd);
位置環(huán)的工作需要eQEP模塊進行位置信息的讀取,而速度環(huán)的工作需要根據(jù)eQEP模塊讀取的位置計算速度。在整個軟件控制中如僅有速度環(huán),則只能控制電機按照一定速度旋轉。增加位置環(huán)不僅可以控制電機旋轉,更可控制電機按照既定位置旋轉,達到伺服控制系統(tǒng)中對精確位置控制的要求。
在項目調(diào)試過程中,筆者遇到當電機轉子第一次旋轉至編碼器原點時,電機會出現(xiàn)輕微抖動伴有異常聲音,嚴重時會導致超調(diào)出現(xiàn)過流保護現(xiàn)象。判斷與轉子原始角度RawTheta = (*eQEP[1]).QPOSCNT + CalibratedAngle公式的計算有關系。圖2表示電機抖動時刻RawTheta的變化。
圖2 RawTheta異常情況
這個問題屬于軟件問題,是在原點信號到來時軟件沒有處理好QPOSCNT與CalibratedAngle的關系,導致CalibratedAngle存儲了原點位置,而QPOSCNT尚未清零出現(xiàn)位置數(shù)據(jù)疊加情況,進而導致后續(xù)的速度與電流同時進行調(diào)節(jié)而出現(xiàn)轉子抖動。
軟件問題的發(fā)現(xiàn)與處理較硬件問題容易解決。若編碼器脈沖信號上存在電磁干擾會直接導致電機運轉過程頻繁抖動或直接超調(diào)而進行保護動作。如圖3右圖所示,一個異常的原點信號使轉子位置突然初始化為0。如圖3左圖所示,軟件中的各PID模塊因調(diào)整誤差而超調(diào),最后導致實際電流過大。信號的電磁干擾是實際調(diào)試中對增量式編碼器脈沖信號影響較大的因素。需要在硬件設計上做更多對電磁干擾的考慮。
圖3 左圖為電流情況 / 右圖為轉子位置(RawTheta)