本文提出了一種基于神經(jīng)網(wǎng)絡(luò)(NN)的負(fù)載機(jī)械速度估計器的實(shí)用實(shí)現(xiàn),適用于具有彈性耦合(elastic coupling)的驅(qū)動系統(tǒng),使用可重構(gòu)FPGA。該系統(tǒng)的獨(dú)特之處在于多層神經(jīng)網(wǎng)絡(luò)被實(shí)現(xiàn)于置于NI CompactRIO控制器內(nèi)部的FPGA中。作為狀態(tài)估計器(state estimator)的神經(jīng)網(wǎng)絡(luò)是使用Levenberg-Marquardt算法進(jìn)行訓(xùn)練的。本文提出了一種適用于此類硬件平臺的多層神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的特殊算法,重點(diǎn)在于最小化FPGA矩陣中使用的可編程塊。實(shí)現(xiàn)于C-RIO的神經(jīng)估計器算法代碼使用LabVIEW軟件進(jìn)行實(shí)現(xiàn)。神經(jīng)估計器進(jìn)行了測試:離線測試(基于測量的測試數(shù)據(jù)庫)和在線測試(在閉環(huán)控制結(jié)構(gòu)中)。這些估計器還針對具有彈性接頭的驅(qū)動系統(tǒng)的負(fù)載機(jī)械變化慣性矩進(jìn)行測試。實(shí)驗(yàn)測試結(jié)果表明,使用高級編程語言在FPGA中實(shí)現(xiàn)的多層神經(jīng)網(wǎng)絡(luò),確保了雙質(zhì)量驅(qū)動系統(tǒng)(two-mass drive system)的狀態(tài)變量高質(zhì)量估計。
雙質(zhì)量系統(tǒng)控制結(jié)構(gòu)的數(shù)學(xué)模型
在本文中,考慮了具有彈性聯(lián)軸器的驅(qū)動系統(tǒng)的常用數(shù)學(xué)模型。通常,這種驅(qū)動被分析為由兩個質(zhì)量通過彈性軸連接組成的系統(tǒng),其中第一個質(zhì)量表示驅(qū)動的慣性矩(the moment of inertia of the drive),第二個質(zhì)量則指負(fù)載側(cè)的慣性矩(the moment of inertia of the load side)。該系統(tǒng)由以下狀態(tài)方程描述(以單位制表示),其中忽略了非線性現(xiàn)象,如間隙或摩擦:

和
是電動機(jī)(motor)和負(fù)載(load)速度,
是電磁(electromagnetic)扭矩、軸(shaft)扭矩和負(fù)載(load)扭矩[以單位制表示],
是電動機(jī)和負(fù)載機(jī)器的機(jī)械時間常數(shù)(mechanical time constants),
是剛度時間常數(shù)(stiffness time constant)。
圖1:帶有彈性聯(lián)軸器以及從負(fù)載機(jī)器轉(zhuǎn)速獲取額外反饋的驅(qū)動系統(tǒng)
電驅(qū)動系統(tǒng)(electrical drive system)通常在經(jīng)典的級聯(lián)結(jié)構(gòu)(cascade structure)中控制,該結(jié)構(gòu)包括兩個主要控制回路:
內(nèi)環(huán)控制回路包含扭矩控制器(torque controller)、電源轉(zhuǎn)換器(power converter)和電動機(jī)的電磁部分(electromagnetic part of the motor)。PI扭矩控制器通常根據(jù)著名的模量標(biāo)準(zhǔn)進(jìn)行調(diào)整,以提供足夠快速的扭矩調(diào)節(jié),并且通常用小時間常數(shù)的一級濾波器進(jìn)行近似。
外環(huán)控制回路包括驅(qū)動的機(jī)械部分(mechanical part of the drive)、速度傳感器(speed sensor)和PI速度控制器(PI speed controller),通常根據(jù)對稱準(zhǔn)則(symmetry criterion)或極點(diǎn)配置法(pole placement method)進(jìn)行調(diào)整。
這種經(jīng)典結(jié)構(gòu)僅對雙質(zhì)量系統(tǒng)的某些慣量比(
)有效。在負(fù)載機(jī)的機(jī)械時間常數(shù)低的情況下,系統(tǒng)的瞬態(tài)(transients)行為不合適,出現(xiàn)扭轉(zhuǎn)扭矩和負(fù)載速度的一些振蕩。為了改善驅(qū)動系統(tǒng)的動態(tài)性并抑制這些振蕩,需要對經(jīng)典級聯(lián)結(jié)構(gòu)進(jìn)行修改。這可以通過從選定的狀態(tài)變量向外部(速度)控制結(jié)構(gòu)插入額外的反饋來實(shí)現(xiàn),或者應(yīng)用更先進(jìn)的速度控制器。
本文采用以電機(jī)轉(zhuǎn)速為基礎(chǔ)反饋、負(fù)載轉(zhuǎn)速為附加反饋的結(jié)構(gòu),如圖1所示,可以獲得較好的扭轉(zhuǎn)振蕩阻尼性能(torsional oscillation damping performance)。
外部速度控制回路的參數(shù)采用極點(diǎn)配置方法設(shè)計。因此,PI速度控制器的參數(shù)和來自負(fù)載速度的額外反饋增益如下:



其中
為假設(shè)的閉環(huán)系統(tǒng)的共振頻率(resonance frequency)和阻尼系數(shù)(damping factor)。描述控制結(jié)構(gòu)中若干增益的方程依賴于選擇的阻尼系數(shù)
和系統(tǒng)的共振頻率
。因此,可以設(shè)置電動驅(qū)動的動態(tài)性能。
負(fù)載側(cè)轉(zhuǎn)速神經(jīng)網(wǎng)絡(luò)估計器(NN estimator)的設(shè)計
在對雙質(zhì)量驅(qū)動系統(tǒng)的負(fù)載機(jī)械速度進(jìn)行NN估計器的實(shí)現(xiàn)過程中,可以區(qū)分以下幾個階段:
從實(shí)際實(shí)驗(yàn)室驅(qū)動系統(tǒng)獲取選定信號的測量,用于下一步的神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程(電磁轉(zhuǎn)矩、馬達(dá)速度、負(fù)載速度,用于測試準(zhǔn)備好的估計器)。NN估計器的第一個輸入信號是電磁轉(zhuǎn)矩(與電機(jī)電流成正比),第二個是驅(qū)動電機(jī)的角速度。兩者都可以使用低成本傳感器在工業(yè)驅(qū)動中簡單測量。
所設(shè)計的NN估計器的結(jié)構(gòu)基于對各種架構(gòu)和訓(xùn)練方法的先前分析,使用Matlab-Simulink仿真軟件
在LabVIEW軟件中實(shí)現(xiàn)所開發(fā)的神經(jīng)估計器
創(chuàng)建支持CompactRIO控制器的軟件,考慮輸入和輸出之間的數(shù)據(jù)傳輸以及FPGA
基于測量的直流電動機(jī)(電樞電流)的電磁扭矩
、電動機(jī)速度
和負(fù)載速度
,在Matlab環(huán)境中進(jìn)行與神經(jīng)網(wǎng)絡(luò)(NN)訓(xùn)練過程相關(guān)的仿真實(shí)驗(yàn)。神經(jīng)網(wǎng)絡(luò)的輸出信號是負(fù)載機(jī)器的估計速度
。訓(xùn)練信號是根據(jù)被測驅(qū)動系統(tǒng)對參考速度和負(fù)載扭矩值各種變化的響應(yīng)準(zhǔn)備的。
選擇了Levenberg-Marquardt算法作為訓(xùn)練方法。該算法中使用的神經(jīng)網(wǎng)絡(luò)權(quán)重矩陣的更新規(guī)則:
,
是成本函數(shù)相對于權(quán)重值的導(dǎo)數(shù)矩陣(Jacobian matrix),
是訓(xùn)練數(shù)據(jù)的目標(biāo)輸出與網(wǎng)絡(luò)輸出之間的差異,
是單位矩陣,
是學(xué)習(xí)因子。
使用CompactRIO的神經(jīng)網(wǎng)絡(luò)估計器的FPGA實(shí)現(xiàn)
在LabVIEW環(huán)境中實(shí)現(xiàn)神經(jīng)元的非線性激活函數(shù)
在LabVIEW中實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的基本問題是每個神經(jīng)元的非線性激活函數(shù)(Nonlinear Activation Function)的實(shí)現(xiàn)(在我們的案例中是雙曲正切函數(shù))。為此,最常用的解決方案是使用查找表(LUT)在labVIEW應(yīng)用額外的固定點(diǎn)數(shù)學(xué)庫(Fixed Point Math Library)(例如CORDIC — COordinate Rotation DIgital Computer,坐標(biāo)旋轉(zhuǎn)數(shù)字計算機(jī)),在某些情況下引入了LUT元素之間的額外插值,文獻(xiàn)中還描述了雙曲正切的二階近似(the second-order approximation of the hyperbolic tangent)或Elliott函數(shù)。
圖2:神經(jīng)元雙曲正切激活函數(shù)的LUT
在我們的案例中,每個神經(jīng)元的非線性激活函數(shù)是使用查找表(LUT)元素實(shí)現(xiàn)的。需要指出的是,LUT塊不支持定點(diǎn)(fixed point(FXP))變量,因此它們必須被轉(zhuǎn)換為16位無符號整數(shù)(如圖2所示)。因此,數(shù)據(jù)必須被校準(zhǔn)到適當(dāng)?shù)乃?,以便正確計算輸入值。輸出數(shù)據(jù)再次被轉(zhuǎn)換為定點(diǎn)類型,并使用這種表示進(jìn)行其他計算。采用這種解決方案是因?yàn)闄?quán)重系數(shù)可以直接從其他軟件(例如,Matlab)導(dǎo)入到FPGA中實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中。
LabVIEW FPGA代碼實(shí)現(xiàn)
代碼時序和FPGA存儲優(yōu)化有幾種方法。單周期定時循環(huán)(Single Cycle Timed Loop(SCTL))是一個有用的工具,可以優(yōu)化程序。在這個循環(huán)中實(shí)現(xiàn)程序的一部分可以消除在標(biāo)準(zhǔn)的While循環(huán)中使用的不必要元素,因此代碼在FPGA中占用更少的空間,并且執(zhí)行所需的時間更短。SCTL循環(huán)應(yīng)用的另一個優(yōu)點(diǎn)是可以在代碼的不同部分增加或減少計算速度。
應(yīng)用流水線技術(shù)(pipeline technique)是提高算法效率的下一基本方法。該方法允許將算法分解為更小的部分,這些部分可以并行實(shí)現(xiàn)。這導(dǎo)致每次迭代中執(zhí)行的代碼縮短,因此整體應(yīng)用實(shí)現(xiàn)所需的時間減少了。在NN估計器的實(shí)現(xiàn)過程中使用了這兩種技術(shù),即SCTL和流水線(例如,優(yōu)化與大量乘法和加法權(quán)重系數(shù)及層輸入值相關(guān)的代碼部分,測量輸入狀態(tài)變量)。
該塊圖用于FPGA實(shí)現(xiàn)兩個隱藏層神經(jīng)網(wǎng)絡(luò)的算法:


該算法由兩個部分組成:主程序和子程序。
NN結(jié)構(gòu)(輸入層、兩個隱藏層和一個輸出層的連接和節(jié)點(diǎn))以及所有突觸系數(shù)的值實(shí)現(xiàn)于程序的主要部分。
各層中每個神經(jīng)元的計算在一個特殊的子程序中實(shí)現(xiàn),該子程序被稱為不可重入的子VI(nonreentrant subVI,即在程序調(diào)用多個相同的子VI時,無論該子VI的執(zhí)行順序如何,都是一次只能執(zhí)行一個,執(zhí)行完一個后再執(zhí)行下一個)。這種解決方案意味著子程序在FPGA的空間中只插入一次,從而使程序經(jīng)濟(jì)地使用邏輯元件。該子程序用于對層的輸入值和突觸系數(shù)進(jìn)行乘法運(yùn)算,然后對結(jié)果進(jìn)行加法并將其引入神經(jīng)元的激活函數(shù)(查找表)。
在每一層的數(shù)據(jù)處理中,主程序會調(diào)用子程序(就像在中斷期間),在同一時間并行計算來自所有神經(jīng)元(在這一層)的輸出值。一次調(diào)用子程序的最大節(jié)點(diǎn)數(shù)為6,但可以通過將權(quán)重值設(shè)置為零來減少這個數(shù)量。這樣的算法可以保持神經(jīng)網(wǎng)絡(luò)中數(shù)據(jù)流的特定屬性;網(wǎng)絡(luò)層之間的計算是串行進(jìn)行的,但在各個層中則進(jìn)行并行處理。在開發(fā)的FPGA算法中,NN結(jié)構(gòu)的更改是非常簡單的,因?yàn)榭梢酝ㄟ^將適當(dāng)?shù)耐挥|連接設(shè)置為零值來刪除它們。
基于FPGA的神經(jīng)估計器的控制結(jié)構(gòu)的硬件實(shí)現(xiàn)
需要提到的是,為了進(jìn)行數(shù)據(jù)采集和處理,C-RIO 控制器的程序是在兩個層次上實(shí)現(xiàn)的:與 FPGA 相關(guān)的部分和與實(shí)時控制器(real-time controller)相關(guān)的部分。在可編程矩陣的層面上,直接與輸入和輸出端口進(jìn)行通信,然而,控制器的主機(jī)部分負(fù)責(zé)分析信號的展示和數(shù)據(jù)的記錄。兩個控制器部分的同步保證了數(shù)據(jù)傳輸?shù)男屎退俣?,通過直接內(nèi)存訪問 (DMA) 實(shí)現(xiàn)。這種技術(shù)使 C-RIO 組件之間的數(shù)據(jù)傳輸?shù)靡詢?yōu)化,同時在代碼部分之間,利用 RAM 內(nèi)存和先進(jìn)先出 (FIFO) 隊(duì)列。
圖4:基于FPGA的神經(jīng)速度估計器與基于DSP的彈性耦合直流電動機(jī)驅(qū)動控制系統(tǒng)相連接
在本文描述的項(xiàng)目中,來自真實(shí)驅(qū)動系統(tǒng)的測量數(shù)據(jù)(NN輸入信號)被放置在C-RIO控制器的ROM內(nèi)存中,然后引入到FPGA中實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)(NN)。為了并行實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò),根據(jù)在NI LabVIEW FPGA模塊中實(shí)現(xiàn)的算法,使用了可重入和不可重入的G代碼部分執(zhí)行方式。該工具允許充分利用FPGA的特性用于所開發(fā)的算法;因此,我們可以選擇算法某些部分的合適執(zhí)行順序(在一個層中的并行計算,但在神經(jīng)網(wǎng)絡(luò)層之間的串行計算)。
所描述的解決方案對于實(shí)現(xiàn)多層神經(jīng)網(wǎng)絡(luò)是足夠的,但當(dāng)輸入數(shù)據(jù)是在線測量時,任務(wù)就變得更加復(fù)雜,開發(fā)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)需要在驅(qū)動控制系統(tǒng)中實(shí)時運(yùn)行。在這種情況下,必須實(shí)施兩個額外的循環(huán):第一個是用于編碼器支持(encoder support),第二個是用于電流測量(current measurements)。因此,在所描述的解決方案中,有三個子程序同時工作——并行,如圖4所示:神經(jīng)網(wǎng)絡(luò)模塊(NN module)、編碼器接口模塊(encoder interface module)和電流數(shù)據(jù)采集模塊(current data acquisition module)。需要注意的是,這三個子程序的計算時間是不同的。它們之間的數(shù)據(jù)傳輸同步對于估算器輸出的正確計算非常重要。在LabVIEW FPGA中有一些同步工具。更重要的有事件(occurrences)、中斷(interrupts)和按順序執(zhí)行的循環(huán)(loops executed sequentially)。使用這些工具時,可以在其他代碼執(zhí)行時阻塞某些部分,或者設(shè)置循環(huán)之間數(shù)據(jù)傳輸?shù)捻樞颉?/p>
實(shí)驗(yàn)結(jié)果顯示,神經(jīng)估計器在負(fù)載速度上的應(yīng)用,已被引入閉環(huán)控制結(jié)構(gòu)。為了進(jìn)行這些測試,需要算法的一個額外部分,該部分與輸入信號的測量以及將結(jié)果從FPGA傳輸?shù)?a target="_blank">dSPACE(見圖4)相關(guān)。由LEM傳感器測量的電機(jī)電流信號被引入C-RIO控制器的模塊NI9215的輸入模擬通道(16位測量分辨率)。
通過NI9505模塊引入編碼器的幾個信號(用于測量被驅(qū)動電機(jī)的轉(zhuǎn)速),并在FPGA中計算電機(jī)轉(zhuǎn)速
的值。神經(jīng)網(wǎng)絡(luò)計算的結(jié)果,經(jīng)過縮放后,通過帶有輸出模擬通道(NI9263)的C-RIO模塊發(fā)送到控制系統(tǒng)。獲得的FPGA(所有測試)的最大時鐘頻率為~ 40 MHz。整個應(yīng)用程序需要96%的SLICEs來自硬件資源。
NI9215
功能:模擬輸入模塊,用于NI CompactDAQ及CompactRIO系統(tǒng),可將模擬信號轉(zhuǎn)換為數(shù)字信號。
特點(diǎn):包含4個同步采樣模擬輸入通道、逐次逼近寄存器(SAR)以及多個16位模數(shù)轉(zhuǎn)換器(ADC),輸入范圍為±10.0V,精度高,適用于高精度信號采集。
NI9505
功能:運(yùn)動控制模塊,主要用于與LabVIEW FPGA模塊配合,實(shí)現(xiàn)電機(jī)驅(qū)動或執(zhí)行器放大器的功能。
特點(diǎn):提供全H橋伺服電機(jī)驅(qū)動,內(nèi)置編碼器接口和電流傳感器,支持單端或差分輸入的編碼器信號,可直接連接到執(zhí)行器,如直流伺服電機(jī)、繼電器等,能夠?qū)崿F(xiàn)位置、速度和電流控制。
NI9263
功能:同步更新模擬輸出模塊,用于將數(shù)字信號轉(zhuǎn)換為模擬信號。
特點(diǎn):具有過壓保護(hù)、短路保護(hù)、低串?dāng)_、快速轉(zhuǎn)換速率、高相對精度和可溯源至NIST的校準(zhǔn),適用于需要高精度模擬輸出的應(yīng)用場景。
-
FPGA
+關(guān)注
關(guān)注
1664文章
22539瀏覽量
640189 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4845瀏覽量
108292 -
估計器
+關(guān)注
關(guān)注
0文章
4瀏覽量
5677
原文標(biāo)題:基于多層神經(jīng)網(wǎng)絡(luò)的雙質(zhì)量驅(qū)動系統(tǒng)速度估計的FPGA實(shí)現(xiàn)
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
神經(jīng)網(wǎng)絡(luò)RAS在異步電機(jī)轉(zhuǎn)速估計中的仿真研究
神經(jīng)網(wǎng)絡(luò)教程(李亞非)
labview BP神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)
【PYNQ-Z2試用體驗(yàn)】神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識
卷積神經(jīng)網(wǎng)絡(luò)如何使用
【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)
人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法有哪些?
如何利用SoPC實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)速度控制器?
怎么設(shè)計ARM與神經(jīng)網(wǎng)絡(luò)處理器的通信方案?
如何構(gòu)建神經(jīng)網(wǎng)絡(luò)?
matlab實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò) 精選資料分享
基于BP神經(jīng)網(wǎng)絡(luò)的PID控制
神經(jīng)網(wǎng)絡(luò)移植到STM32的方法
基于混沌蟻群的神經(jīng)網(wǎng)絡(luò)速度辨識器研究
基于神經(jīng)網(wǎng)絡(luò)的負(fù)載機(jī)械速度估計器實(shí)現(xiàn)方案
評論