鴉 婧,俞竹青,蘇 娜
(常州大學(xué) 機械與軌道交通學(xué)院,常州 213100)
直流電機在某一特定負(fù)載下,通過改變電樞供電電壓以調(diào)節(jié)電機的穩(wěn)定轉(zhuǎn)速[1]。 因其轉(zhuǎn)速可以平滑無極調(diào)節(jié)(在額定轉(zhuǎn)速以下調(diào)節(jié)),調(diào)速方便,過載能力大等優(yōu)良的調(diào)速特性, 被廣泛應(yīng)用于輕工、機械制造和冶金等多種現(xiàn)代工業(yè)部門。 直流電機速度的調(diào)節(jié)可以通過改變電壓來實現(xiàn),但是在電壓不變的情況下,電機速度會受到負(fù)載轉(zhuǎn)矩變化的影響。目前,直流電機的數(shù)學(xué)模型大多采用傳統(tǒng)公式進行理論建模,根據(jù)直流電機電氣方程和機械特性方程通過查用工廠或手冊的典型數(shù)據(jù)推導(dǎo)計算,或不得已采樣簡化模型。 由于數(shù)據(jù)不全面,影響了計算的準(zhǔn)確度和可信度,往往計算結(jié)果與實際模型相比有一定的誤差。
在需要精確控制的領(lǐng)域,一般會將被控對象描述為具體的數(shù)學(xué)表達(dá)式,數(shù)學(xué)表達(dá)式能夠很好地體現(xiàn)出輸入與輸出之間的關(guān)系。 在運用計算機仿真整個系統(tǒng)的運動狀態(tài)時,也需要確立每個模塊的特征和各模塊之間相互關(guān)聯(lián)的數(shù)學(xué)關(guān)系。 所以如何建立準(zhǔn)確的直流電機的變化量與其控制量的關(guān)系曲線和數(shù)學(xué)表達(dá)式是實現(xiàn)其精確控制的重要前提。
目前,已經(jīng)有許多文獻(xiàn)就直流電機數(shù)學(xué)模型的建立提出了辨識方法。 以提高智能車的控制性能為前提,通過實驗獲得參數(shù)建立直流電機電樞電壓與轉(zhuǎn)速的傳遞函數(shù)的方法, 能夠應(yīng)用于電機的選型、仿真平臺的搭建以及作為輔助調(diào)試手段等方面[2]。但是該方法的傳遞函數(shù)以傳統(tǒng)公式計算為基礎(chǔ)而建立,且傳遞函數(shù)的正確性依賴于獲取的參數(shù)是否準(zhǔn)確;通過測量出多組輸人電壓、輸出電壓、反饋電壓、輸出轉(zhuǎn)速的數(shù)值,利用Matlab 軟件將數(shù)據(jù)擬合成曲線,進而得到它們之間的函數(shù)表達(dá)式,最后通過在單片機中進行函數(shù)表達(dá)式的運算來實現(xiàn)電機的無級調(diào)速的方法[3],能夠提高BLDCM 驅(qū)動器調(diào)速精度;通過實驗和理論分析研究了電機端電壓平均值與電機轉(zhuǎn)速之間的非線性關(guān)系,運用Matlab 分別對端電壓平均值與轉(zhuǎn)速進行一次和二次線性擬合,得到兩者關(guān)系曲線和拋物線關(guān)系式這一方法可以實現(xiàn)PWM 精準(zhǔn)調(diào)速[4]。 文獻(xiàn)[3]、文獻(xiàn)[4]雖通過實驗給出了直流電機控制電壓與轉(zhuǎn)速之間的函數(shù)關(guān)系,但兩者的擬合數(shù)據(jù)都是在電機空載情況下獲得的,未能考慮到負(fù)載轉(zhuǎn)矩的變化對電機速度的影響。
針對在PWM 調(diào)速系統(tǒng)中電機速度的變化會受到負(fù)載轉(zhuǎn)矩與電壓兩者的影響問題,提出一種基于BP 神經(jīng)網(wǎng)絡(luò)建立的直流電機扭矩電壓與轉(zhuǎn)速數(shù)學(xué)模型辨識新方法,根據(jù)電機在不同的負(fù)載轉(zhuǎn)矩情況下電壓與轉(zhuǎn)速樣本數(shù)據(jù), 經(jīng)LM 算法訓(xùn)練網(wǎng)絡(luò)模型能夠辨識出直流電機的數(shù)學(xué)模型。
誤差反向傳播(back propagation,BP)神經(jīng)網(wǎng)絡(luò)是一種采用監(jiān)督學(xué)習(xí)規(guī)則的多層前饋人工神經(jīng)網(wǎng)絡(luò)。 BP 網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示,通常由1 個輸入層,1個輸出層和若干個隱含層構(gòu)成,每層又由若干個神經(jīng)元組成,同層神經(jīng)元之間無關(guān)聯(lián),每一個神經(jīng)元的輸出值由輸入值、激活函數(shù)、閾值所決定[5]。 實際上,研究表明只需1 個隱含層(激活函數(shù)為sigmoid)的BP 神經(jīng)網(wǎng)絡(luò)就具有能夠逼近任意非線性函數(shù)的能力[6]。
BP 神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程可分為前向網(wǎng)絡(luò)計算和誤差反向傳播,這兩個過程是相繼連續(xù)反復(fù)進行的。 前向網(wǎng)絡(luò)計算是指輸入層樣本信號一層一層向前傳播,每層神經(jīng)元的輸出由前一層神經(jīng)元經(jīng)相應(yīng)的加權(quán)和計算而得到。 前向計算的過程既是網(wǎng)絡(luò)訓(xùn)練的一部分,也是網(wǎng)絡(luò)模型建立完成后應(yīng)用其工作的過程[7]。 誤差反向傳播過程主要是對各層權(quán)值和閾值進行修改,修改條件為網(wǎng)絡(luò)實際輸出與給定的樣本期望輸出之間的誤差未能達(dá)到要求的性能指標(biāo)。
以圖1 所示的BP 網(wǎng)絡(luò)結(jié)構(gòu)M-Q-L 為例,其中M,Q,L 分別為輸入層、隱含層、輸出層的神經(jīng)元個數(shù)。
圖1 BP 網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.1 BP network structure diagram
隱含層的第i 個神經(jīng)元輸入neti、輸出oi為
式中:ωij為權(quán)值;xj為第j 個輸入神經(jīng)元;bi為閾值;g(·)為隱含層激活函數(shù)。
輸出層第k 個神經(jīng)元的輸入netk、輸出ok為
式中:f(·)為輸出層激活函數(shù)。
以上是前向計算過程,若在前向傳播后的輸出層未能達(dá)到所期望的效果則會進入誤差反向傳播過程,對權(quán)值和閾值進行修正,即從輸出層開始向前計算各權(quán)值和閾值對總誤差的影響(梯度)。
為了對權(quán)值和閾值進行調(diào)整,對每個樣本引入均方誤差性能函數(shù):
式中:ok為BP 神經(jīng)網(wǎng)絡(luò)的輸出;tk為輸出樣本。
為了使得網(wǎng)絡(luò)學(xué)習(xí)過程中朝著逐漸減小的方向,即應(yīng)該按照誤差性能函數(shù)的負(fù)梯度方向調(diào)整,從而使模型收斂。
輸出層的權(quán)值修正公式為
式中:η 為學(xué)習(xí)率。
隱含層的權(quán)值修正公式為
傳統(tǒng)的BP 神經(jīng)網(wǎng)絡(luò)采用最速下降法來修正權(quán)值和閾值,但是網(wǎng)絡(luò)收斂速度慢,易于陷入局部極小,訓(xùn)練過程常常發(fā)生振蕩等缺陷[8]。 而LM 算法以數(shù)值優(yōu)化為背景,經(jīng)過經(jīng)典牛頓算法發(fā)展而來。 牛頓法是一種基于二階泰勒級數(shù)的快速優(yōu)化算法,其基本方法是:
式中:W(k)為第k 次迭代各層之間的權(quán)值矩陣或閾值矩陣;A(k)為誤差性能函數(shù)在當(dāng)前權(quán)值和閾值下的Hessian 矩陣(二階導(dǎo)數(shù));g(k)=為第k 次迭代的網(wǎng)絡(luò)輸出誤差對各權(quán)值或閾值的梯度矩陣,負(fù)號表示梯度的最速下降方向。
牛頓法雖然收斂速度很快,但是因其需要計算Hessian 矩陣,所以對于前饋神經(jīng)網(wǎng)絡(luò)來說牛頓法具有計算復(fù)雜、工作量大等缺陷。而LM 算法的提出就是為了在以近似二階訓(xùn)練速率進行修正時避免計算Hessian 矩陣,將Hessian 矩陣近似表示為
梯度表達(dá)式為
類似于牛頓法,LM 算法的權(quán)值或閾值修正表達(dá)式為
式中:I 為單位矩陣;J 為雅克比矩陣。
式(13)可以看出,若μ=0 時,則為牛頓法;若μ取值很大時,LM 算法則變?yōu)椴介L較小的梯度下降法。 實驗研究表明[9],通常對于包含數(shù)百個權(quán)值的函數(shù)逼近網(wǎng)絡(luò),LM 算法的收斂速度最快,網(wǎng)絡(luò)誤差最小,不易陷入局部極小點,具有很強的容錯能力。
基于神經(jīng)網(wǎng)絡(luò)直流電機神經(jīng)網(wǎng)絡(luò)模型建立的過程如圖2 所示,網(wǎng)絡(luò)訓(xùn)練前首先就需要獲得輸入、輸出樣本數(shù)據(jù)。 因為在PWM 調(diào)速系統(tǒng)中直流電機的轉(zhuǎn)速與控制電壓是非線性的,并且電機實際工作時需帶負(fù)載運轉(zhuǎn),電機速度的變化會受到負(fù)載轉(zhuǎn)矩與控制電壓兩者的影響,所以將負(fù)載轉(zhuǎn)矩和控制電壓作為神經(jīng)網(wǎng)絡(luò)的輸入,電機轉(zhuǎn)速作為神經(jīng)網(wǎng)絡(luò)的輸出。 樣本數(shù)據(jù)的選取對網(wǎng)絡(luò)模型訓(xùn)練的準(zhǔn)確性非常重要,樣本數(shù)據(jù)量過多會使計算量大,內(nèi)存資源浪費,模型訓(xùn)練效率降低;樣本數(shù)量過少會導(dǎo)致不能獲得有效的模型。 本文選取了適當(dāng)?shù)臉颖緮?shù)量(5組不同負(fù)載轉(zhuǎn)矩下電壓與電機轉(zhuǎn)速)以表明方法可行性,樣本數(shù)據(jù)參考文獻(xiàn)[4]測試方法獲得,每組數(shù)據(jù)測試3 次以保證準(zhǔn)確性,具體數(shù)據(jù)截取部分如表1 所示。
圖2 直流電機神經(jīng)網(wǎng)絡(luò)模型建立流程Fig.2 Flow chart of neural network model establishment of DC motor
表1 訓(xùn)練樣本數(shù)據(jù)Tab.1 Training sample data
數(shù)據(jù)的預(yù)處理對網(wǎng)絡(luò)模型的訓(xùn)練效率有很大的影響, 所以需要在訓(xùn)練前將數(shù)據(jù)進行歸一化處理。 歸一化不改變數(shù)據(jù)的相對大小和排列順序,而只是將其按比例縮放,使之變換于某個區(qū)間內(nèi)[10]。因為本文的樣本數(shù)據(jù)不可能為負(fù)值,所以利用最大值和最小值方法將數(shù)據(jù)按式歸一化至區(qū)間[0-1]。
式中:x′為歸一化后樣本數(shù)據(jù);x 為歸一化前樣本數(shù)據(jù);xmax為樣本數(shù)據(jù)中最大值;xmin為樣本數(shù)據(jù)中最小值。
本文利用Matlab 仿真軟件中的神經(jīng)網(wǎng)絡(luò)工具箱對直流電機在不同負(fù)載轉(zhuǎn)矩情況下控制電壓與轉(zhuǎn)速非線性模型進行訓(xùn)練,網(wǎng)絡(luò)的訓(xùn)練過程如下所示。
(1)確定神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。 輸入層節(jié)點數(shù)M=2,設(shè)置1 個隱含層節(jié)點數(shù)且激活函數(shù)為logsig, 輸出層節(jié)點數(shù),激活函數(shù)為purelin,并對各層之間的權(quán)值閾值隨機初始化。 設(shè)置性能函數(shù)為均方誤差函數(shù)Ep且其指標(biāo)為默認(rèn)值0,表明盡最大努力建立最佳網(wǎng)絡(luò)。
(2)開始網(wǎng)絡(luò)訓(xùn)練,計算網(wǎng)絡(luò)正向傳播誤差Ep。
(3)若Ep>0,則進入誤差反向傳播過程,利用LM 算法進行權(quán)值和閾值的修正。
(4)若Ep=0 或者迭代次數(shù)超過1000,則終止網(wǎng)絡(luò)訓(xùn)練。
神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練迭代1000 次的均方誤差如圖3 所示,隨著迭代次數(shù)的增加,均方誤差逐漸減少, 網(wǎng)絡(luò)在第1000 次訓(xùn)練迭代完成后模型誤差達(dá)到最佳為1.0932×10-3。
圖3 均方誤差圖Fig.3 Mean square error diagram
模型訓(xùn)練完成后利用Matlab 神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)將各網(wǎng)絡(luò)層之間的連接權(quán)值與閾值提取出來建立直流電機模型數(shù)學(xué)表達(dá)式。
式中:simy 為電機神經(jīng)網(wǎng)絡(luò)模型輸出;x 為電機神經(jīng)網(wǎng)絡(luò)模型輸入矩陣;net.iw{1,1}為輸入層到隱含層權(quán)值矩陣;net.lw{2,1}為隱含層到輸出層權(quán)值矩陣;net.b{1}為輸入層到隱含層閾值矩陣;net.b{2}為隱含層到輸出層閾值矩陣;logsig 為
訓(xùn)練結(jié)束得到的權(quán)值閾值結(jié)果為
加載訓(xùn)練完成后的神經(jīng)網(wǎng)絡(luò)模型,給出在電機空載和負(fù)載轉(zhuǎn)矩為0.14 N·m 運行情況下,直流電機電壓與轉(zhuǎn)速實際樣本數(shù)據(jù)作為輸入值,得到的模型預(yù)測輸出結(jié)果如圖4 所示。
圖4 神經(jīng)網(wǎng)絡(luò)模型擬合圖Fig.4 Fitting diagram of neural network model
神經(jīng)網(wǎng)絡(luò)模型擬合圖可以看出,訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)模型輸出數(shù)據(jù)與樣本實際數(shù)據(jù)基本吻合,誤差較小且保持在一定的范圍內(nèi)。 與文獻(xiàn)[7]以二次函數(shù)擬合曲線相比, 基于BP-LM 算法直流電機負(fù)載轉(zhuǎn)矩、電壓與轉(zhuǎn)速的非線性函數(shù)擬合效果具有較大的優(yōu)勢。
本文基于BP-LM 算法提出了一種直流電機在不同負(fù)載轉(zhuǎn)矩情況下的控制電壓與轉(zhuǎn)速非線性數(shù)學(xué)模型表達(dá)的新方法。 首先,根據(jù)實驗獲得不同負(fù)載轉(zhuǎn)矩工作情況下, 直流電機在PWM 調(diào)速系統(tǒng)中控制電壓、負(fù)載轉(zhuǎn)矩與轉(zhuǎn)速的數(shù)據(jù)作為神經(jīng)網(wǎng)絡(luò)的輸入輸出;然后再利用Matlab 軟件的神經(jīng)網(wǎng)絡(luò)工具箱建立神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),經(jīng)過LM 算法的優(yōu)化、訓(xùn)練得到直流電機負(fù)載轉(zhuǎn)矩電壓與轉(zhuǎn)速數(shù)學(xué)模型; 最后,訓(xùn)練結(jié)果證明基于BP-LM 算法構(gòu)建的直流電機數(shù)學(xué)模型能夠?qū)斎霚?zhǔn)確的映射輸出,模型預(yù)測誤差小,均方誤差最佳為。 模型驗證結(jié)果表明,本文提出的基于BP-LM 算法直流電機電壓轉(zhuǎn)矩與轉(zhuǎn)速非線性數(shù)學(xué)模型建立方法是可行的。