高澤東 李建軍 高教波 王 軍 解俊虎
(西安應用光學研究所,陜西 西安 710065)
傳統(tǒng)PID控制方法算法簡單、魯棒性好且易于實現(xiàn),在電機伺服控制中得到大量應用。伺服系統(tǒng)存在參數(shù)時變、電機及被控對象的非線性等問題,很難確定準確的控制模型[1-2]。傳統(tǒng)PID控制不能解決不同速度高精度位置跟蹤問題。對此,現(xiàn)代伺服控制系統(tǒng)采用智能控制方法對傳統(tǒng)PID控制算法進行改進[3-4]。模糊自整定PID算法是一種改進的PID控制算法,具有PID控制和模糊控制的優(yōu)點,可實現(xiàn)對PID參數(shù)的在線動態(tài)調(diào)整。部分研究結(jié)果表明,模糊自整定PID算法對被控對象的非線性和時變性具有一定的適應能力,同時也證明了該算法處理變速高精度位置跟蹤問題的可行性[4-7]。
本文研究了模糊自整定PID算法的基本原理和程序設計方法,并將研究結(jié)果應用于伺服控制系統(tǒng)中。試驗表明,基于該算法的伺服控制系統(tǒng)在不同跟蹤速度下均具有較短的響應時間、較小的跟蹤誤差和較高的跟蹤精度。
模糊自整定PID控制原理如圖1所示。模糊自整定PID控制器以誤差E和誤差變化ED作為輸入,在運行中不斷檢測E和ED,根據(jù)模糊控制原理對PID三個參數(shù)進行在線修改,以滿足不同E和ED對參數(shù)的不同要求,從而使被控對象有良好的動、靜態(tài)性能。伺服電機的位置設定值由PS給定,實時位置由研華PCI-1784編碼器采集卡獲取,模糊PID控制器的輸出由PCI-1723 AO卡實現(xiàn),驅(qū)動器接收PCI-1723 AO卡的-10~+10 V命令,以驅(qū)動伺服電機。
圖1 模糊自整定PID控制原理Fig.1 Principle of fuzzy self-tuning PID control
在介紹算法實現(xiàn)之前,有必要介紹一下模糊控制的三個基本概念:精確變量、模糊語言變量和隸屬度。精確變量是控制器輸入輸出變量的實際物理量。模糊自整定PID算法中有誤差、誤差變化、比例系數(shù)、微分系數(shù)和積分系數(shù)五個精確變量。模糊語言變量是取值為模糊數(shù)的、由語言詞來定義的變量,簡稱模糊變量。模糊變量組成的集合稱為模糊集合,取模糊集合為{負大,負中,負小,零,正小,正中,正大},用字母集合{NB,NM,NS,ZO,PS,PM,PB}表示,為程序處理方便,又用{0,1,2,3,4,5,6}表示。隸屬度就是用[0,1]中的一個實數(shù)來度量精確變量屬于模糊變量的程度。對于一個模糊集而言,隸屬度隨著模糊語言變量取值的不同而改變,這個表示隸屬度變化規(guī)律的函數(shù)稱為隸屬函數(shù)[8]。任意精確變量轉(zhuǎn)化成模糊變量都會得到一個與模糊變量相同個數(shù)的隸屬度向量。本文采用數(shù)組float gl_fMemshipValue_Err[7]表示誤差的隸屬度向量,其中gl_fMemshipValue_Err[0]為誤差取模糊值NB時的隸屬度,gl_fMemshipValue_Err[1]為誤差取模糊值 NM 時的隸屬度,...,gl_fMemshipValue_Err[6]為誤差取模糊值PB時的隸屬度。
模糊自整定PID算法的核心是實現(xiàn)PID參數(shù)的自適應整定。PID參數(shù)的自整定分三個步驟完成:①將誤差和誤差變化模糊成模糊集合和隸屬度向量;②根據(jù)模糊化的隸屬度向量和模糊控制規(guī)則進行模糊推理,得到PID參數(shù)的模糊語言變量和隸屬度;③將得到的PID參數(shù)的模糊語言變量和隸屬度清晰化,得到精確的PID參數(shù)值。
所謂模糊化,就是根據(jù)輸入變量模糊子集的隸屬度函數(shù),找出E和ED精確變量對應每個模糊語言變量的隸屬度,從而把精確的輸入量“模糊化”成不同的語言值,即將精確變量轉(zhuǎn)化成對應的隸屬度向量。
2.1.1 標準隸屬度函數(shù)
隸屬函數(shù)有多種形式,在實際應用中為方便起見,常采用梯形隸屬函數(shù)和三角形隸屬函數(shù)[8]。本文選擇三角形隸屬函數(shù)實現(xiàn)精確量的模糊化,如圖2所示。
圖2 標準隸屬函數(shù)Fig.2 Standard membership function
圖2中,橫軸顯示精確量的變化區(qū)間是[-3,+3],但是實際的變量范圍并不在此區(qū)間內(nèi),所以須進行尺度變換,將實際尺度轉(zhuǎn)換到標準尺度內(nèi)。
首先研究標準隸屬函數(shù)設計成程序的方法,將圖2的分布分成三類,即左側(cè)隸屬度分布、中間隸屬度分布和右側(cè)隸屬度分布,如圖3所示。
圖3 三角形隸屬度分布示意圖Fig.3 Schematic of the distribution of triangle membership
左側(cè)隸屬度分布函數(shù)為:
中間隸屬度分布函數(shù)為:
右側(cè)隸屬度分布函數(shù)為:
式(1)~式(3)的實現(xiàn)函數(shù)為float fLeft_MembershipFunc(float fValue,float fMin,float fMax)、float fMid_MembershipFunc(float fValue, floatfMin, float fMid,float fMax)、float fRight_MembershipFunc(float fValue,float fMin,float fMax)。這三個函數(shù)可以完全實現(xiàn)標準隸屬度函數(shù)。
2.1.2 尺度變換
圖2 中標準尺度[-3,3]與實際尺度[Kpmin,Kpmax]相互轉(zhuǎn)換的線性關系為:式中:Kpmin為實際尺度的最小值;Kpmax為實際尺度的最大值;x為標準尺度上的任意值;y為尺度變換后的值。式(4)對應的尺度變換子函數(shù)為float fScaleTrans(float fFactMin,float fFactMax,float fStdValue),返回值就是尺度變換后的值。尺度變換的原理如圖4所示。
圖4 尺度變換原理示意圖Fig.4 Principle of the scale conversion
2.1.3 模糊化實現(xiàn)函數(shù)
模糊化過程用函數(shù)void FuzzyProcess(float fError,float fErrorDiff)實現(xiàn),函數(shù)如下。
利用該函數(shù)得到 gl_fMemshipValue_Err[7]和gl_fMemshipValue_ErrDiff[7]兩個隸屬度向量,其中 gl_fMemshipValue_Err[7]為誤差 fError的隸屬度向量,gl_fMemshipValue_ErrDiff[7]為誤差變化 fErrorDiff的隸屬度向量。
模糊推理就是模擬人的思維,運用模糊概念進行推理。采用合適的推理方法,將輸入變量的模糊隸屬度向量與模糊控制規(guī)則進行合成,得到被控制量的模糊隸屬度向量。
2.2.1 模糊控制規(guī)則
模糊控制規(guī)則是對被控對象進行控制的一個知識模型,基于操作人員的控制經(jīng)驗和本領域?qū)<业挠嘘P知識而建立。這個模型的建立是否準確,將直接決定模糊控制器性能的好壞。基于本文伺服控制系統(tǒng)的硬件環(huán)境,經(jīng)過分析和調(diào)試,得到性能較為理想的Kp、Ki、Kd的控制規(guī)則表如表1所示。該表用二維數(shù)組gl_RulebaseKp[7][7]、gl_RulebaseKi[7][7]、gl_RulebaseKd[7][7]存儲。
表1 模糊控制規(guī)則表Tab.1 Fuzzy control rules
2.2.2 模糊推理方法
模糊推理方法的具體步驟如下。
①將誤差和誤差變化模糊隸屬度向量進行合成,得到隸屬度合成矩陣。
式中:μerr[i]為誤差的隸屬度向量;μerrdiff[j]為誤差變化的隸屬度向量;W[i][j]為合成隸屬度向量;運算符“*”表示取min(極小)。
②找出合成矩陣的最大值作為被控制模糊變量的隸屬度值,并記錄Wmax時的位置值坐標(iWmax,jWmax)。
③查詢模糊控制規(guī)則矩陣在(iWmax,jWmax)處的值,得到被控制量的模糊語言變量。
2.2.3 模糊推理實現(xiàn)函數(shù)
根據(jù)上述討論,模糊推理可由函數(shù)void FuzzyReason(int* piFuzzyKp,int* piFuzzyKi,int*piFuzzy-Kd,float*pfMemShipValue)實現(xiàn)。該功能函數(shù)的輸入值為誤差隸屬度向量gl_fMemshipValue_Err[7]和誤差變化隸屬度向量gl_fMemshipValue_ErrDiff[7],輸出為Kp、Ki、Kd的模糊語言變量和隸屬度值。
通過模糊推理得到的是模糊量,而對于實際的控制必須為清晰量。因此,需要將模糊量轉(zhuǎn)換成清晰量。清晰化過程就是將模糊語言變量和隸屬度轉(zhuǎn)換成精確量,也就是對隸屬度函數(shù)進行反運算。
2.3.1 清晰化方法
根據(jù)圖3所示,可以得到不同三角隸屬度函數(shù)分布的反運算公式。左側(cè)的隸屬度函數(shù)反運算為:
中間的隸屬度函數(shù)反運算為:
右側(cè)的隸屬度函數(shù)反運算為:
由此可以得到被控制量的實際值。值得注意的是,xmin、xmid、xmax均需進行尺度變換將其轉(zhuǎn)換到實際Kp、Ki、Kd三個值的調(diào)整范圍。
2.3.2 清晰化實現(xiàn)函數(shù)
清晰化過程由函數(shù)void FuzzyVisible(int iFuzzy-Kp,int iFuzzyKi,int iFuzzyKd,float fMemShipValue,float*pfDetKp,float*pfDetKi,float*pfDetKd)實現(xiàn)。函數(shù)的輸入值為模糊推理過程得到的iFuzzyKp、iFuzzyKi、iFuzzyKd、fMemShipValue,函數(shù)的輸出值為float*pfDetKp,float*pfDetKi、float*pfDetKd,即 Kp、Ki、Kd的調(diào)整值。
伺服控制軟件需要完成人機操作非實時任務和控制算法實時任務這兩類任務。將人機界面、參數(shù)設定和狀態(tài)數(shù)據(jù)顯示等非實時任務交由Windows XP操作系統(tǒng)完成,這部分程序基于VC6.0開發(fā)。將包括模糊自整定PID算法在內(nèi)的需要嚴格按照時間節(jié)點、具有確定性的任務交由RTX處理,這部分程序利用IntervalZero公司的RTX SDK平臺開發(fā)。非實時任務和控制算法實時任務這兩部分程序通過共享內(nèi)存實現(xiàn)數(shù)據(jù)交互,通過事件體實現(xiàn)進程同步。這里著重闡述實時任務的程序?qū)崿F(xiàn)方法。
進入實時控制程序,首先進行初始化,將當前誤差值Error、上一時刻誤差值Error_1、誤差積分值ErrorIntegral、算法輸出值 dUOutput和 dUOutput_1均初始化為0;然后將當前位置的反饋值PosFb作為位置設定值PosSet,再設置模糊控制算法輸入、輸出五個變量(誤差、誤差變化、比例調(diào)節(jié)、積分調(diào)節(jié)、微分調(diào)節(jié))的實際尺度區(qū)間,并設置系統(tǒng)的初始PID參數(shù)值;最后啟動定時器,設置定時器循環(huán)周期。定時器循環(huán)執(zhí)行模糊自整定PID算法,算法由TimerBody()函數(shù)實現(xiàn)。
TimerBody()函數(shù)首先獲取位置設定值PosSet,通過PCI-1784獲取反饋值PosFb,計算得到當前的誤差值Error和誤差變化ErrorDiff,再通過抗積分飽和算法計算積分值ErrorIntegral;然后通過模糊化、模糊推理和清晰化這三個過程得到比例、微分、積分調(diào)整參數(shù);最后完成PID控制算法,執(zhí)行輸出信號-10~+10 V限幅,通過PCI-1723 AO卡輸出。至此即完成模糊自整定PID算法的一個控制周期。
試驗對象為Newport公司的URS75CC旋轉(zhuǎn)臺,驅(qū)動電機為Maxon公司的UE34CC伺服電機,驅(qū)動器選擇Maxon公司的ADS50/5驅(qū)動器,按圖1所示的原理組成伺服控制系統(tǒng)。在相同的硬件條件下,設計了基于傳統(tǒng)PID算法的實時伺服控制軟件和基于模糊自整定PID算法的實時伺服控制軟件。輸入幅值為1°、頻率為4 Hz的方波,得到圖5所示的系統(tǒng)方波響應曲線。由此可以看出,與傳統(tǒng)的PID控制器相比,模糊自整定PID控制器在位置跟蹤方面具有魯棒性好、動態(tài)跟蹤性能好和誤差小的特點。
圖5 方波響應曲線Fig.5 Response curves of rectangular wave
圖6為模糊自整定PID算法在幅值為10°、頻率為1 Hz的正弦信號的響應曲線,指令周期為500 μs,電機的運行速度范圍為0~62.8°/s。
圖6 位置跟蹤響應曲線Fig.6 Response curves of position tracking
從圖6可以看出,位置的指令曲線和反饋曲線基本重合,位置跟蹤誤差很小。這說明控制系統(tǒng)在不同跟蹤速度下的動態(tài)響應快,位置控制精度高。
模糊自整定PID控制算法將PID控制和模糊控制原理相結(jié)合,以誤差和誤差變化為輸入,通過模糊推理,實現(xiàn)了對PID參數(shù)的實時動態(tài)調(diào)整,具有結(jié)構(gòu)簡單、易于實現(xiàn)、方便調(diào)試的優(yōu)點。
試驗測試結(jié)果表明,該控制器動態(tài)響應快,能適應不同速度的高精度位置跟蹤。本算法開發(fā)的實時伺服控制軟件運行可靠、魯棒性好,已經(jīng)成功應用于某隨動跟蹤系統(tǒng)中。
[1]王偉,張晶濤,柴天佑.PID參數(shù)先進整定方法綜述[J].自動化學報,2000,26(3):347 -355.
[2]楊智,朱海鋒,黃以華.PID控制器設計與參數(shù)整定方法綜述[J].化工自動化及儀表,2005,32(5):1 -7.
[3]胡包鋼,應浩.模糊PID控制技術研究發(fā)展回顧及其面臨的若干重要問題[J].自動化學報,2001,27(4):567 -584.
[4]盧澤生,張強.高精度交流伺服系統(tǒng)的模糊PID雙??刂疲跩].北京航空航天大學學報,2007,33(3):315-318.
[5]張莉,朱海洋.混合模糊PID控制器在伺服控制系統(tǒng)中的應用[J].自動化儀表,2010,31(6):61 -63.
[6]王志明,龔振邦,袁晶,等.基于模糊PID位置控制的氣伺服系統(tǒng)[J].機電工程,2009,26(10):93 -108.
[7]黃峰,汪岳峰,顧軍,等.模糊參數(shù)自整定PID控制器的設計與仿真研究[J].光學精密工程,2004,12(4):235 -239.
[8]劉金琨.先進PID控制及其MATLAB仿真[M].北京:電子工業(yè)出版社,2002.
[9]胡祜德,曾樂生,馬東生.伺服系統(tǒng)原理與設計[M].北京:北京理工大學出版社,1995.