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