朱勁濤
(南京信息工程大學,江蘇 南京 210044)
無刷直流電機(Brushless DC Motor,BLDCM)由于具有起動和調速性好,控制簡單以及堵轉轉矩大等特點,在航空航天、數控裝置以及汽車電子等驅動和伺服系統中得到了廣泛應用[1,2]。在BLDCM控制系統中,常采用二二導通單管調制方式,需要檢測轉子磁場相對于定子繞組的位置以控制逆變電路的導通與關斷。為了獲得轉子位置信息,傳統的方式是直接使用如霍爾傳感器的位置傳感器檢測,但其使得電機體積增大,難以在高低溫環境下工作,并且使用傳感器會增加接線,引入干擾,因此需要發展無位置傳感器控制方式。
本文探討一種基于現場可編程門陣列(Field-Programmable Gate Array,FPGA)加速神經網絡的BLDCM控制系統,利用深度學習技術改善對控制信號的分析,提高控制精度,實現無BLDCM的自適應控制。
FPGA是常用的神經網絡加速器,其邏輯部分主要由可配置邏輯塊和用于接口的輸入/輸出塊組成,開發的一般流程如圖1所示,主要包括電路功能設計、設計輸入、綜合、實現與布線、器件編程、功能仿真、綜合后仿真、時序檢查、板級仿真以及電路驗證等[3]。

圖1 FPGA開發的一般流程
深度學習是一種以人工神經網絡為框架,利用簡單但非線性的模型對數據進行表征學習并提取數據特征的方法。其中卷積神經網絡(Convolutional Neural Network,CCN)是一種被廣泛使用的深度學習的基礎模型,它是一個多層神經網絡,主要的層包括卷積層、池化層以及全連接層[4,5]。CNN一般分為訓練過程和推理過程,訓練過程主要為處理數據和反向調整模型的參數,推理過程則是利用額外的數據測試模型對數據進行處理與分類。本文以CNN作為FPGA加速器的加速目標,其基本框架大致可以分為片外存儲、片上緩存以及寄存器3個部分。
FPGA主要具有可編程性和可重構性特點,可以根據算法來設計硬件結構,即開發者可以根據自己的需求,通過配置FPGA內部邏輯塊的連接以實現邏輯操作與設計目標,從而更快更靈活地升級其算法。FPGA還能夠實現并行計算,相比于圖形處理器(Graphic Processing Units,GPU)有較好的能效比,即在相同功耗下獲得更高的性能。此外,FPGA相比于專用集成電路(Application Specific Integrated Circuit,ASIC)有更短的開發周期,編程效率更高。
圖2為逆變器控制的BLDCM等效電路圖,其中電機采用三相星型連接方式。由于電機中沒有位置傳感器,無法直接檢測轉子位置,因此需要通過檢測電路測量定子繞組的電壓、電流等變量間接確定轉子的位置。目前較為成熟的方法有反電動勢過零檢測法、人工智能法以及狀態觀測法等[7]。其中,反電動勢過零檢測法線路設計簡單,模塊參數易于計算,性能可靠性高,應用廣泛,技術成熟。此外,由于大部分BLDCM中沒有中心點的引出線,需要使用其中的端電壓法,端電壓指相電壓與中心點對地電壓的和[8]。

圖2 逆變器控制的無刷直流電機等效電路圖
假定BLDCM的氣隙磁通密度分布為方波,反電動勢為梯形波,在三相繞組完全對稱,忽略渦流損耗及磁路不飽和條件下,得到電機動態模型為:
式中,UAg、UBg、UCg為每相繞組端電壓,L為繞組自感,M為繞組之間的互感,ea、eb、ec為每相的反電動勢,Ung為中心點對地電壓。
由于電機采用二二導通單管調制方式,在任意時刻僅有兩相導通且這兩相電流大小相等,方向相反。假定B、C相導通,A相懸空,電流為0。由式(1)可得A相的反電動勢過零點方程為:

其余兩相同理可得。通過檢測反電動勢的過零點便可以確定B、C相的過零點時刻,得到轉子信號位置,依此調整逆變器的導通與關斷,在此基礎上再延遲30°電角度即是電機的換相時刻。
由于BLDCM的反電動勢取決于每極磁通和轉速的乘積,假定每極磁通保持不變,則反電動勢與電機的轉速成正比關系,電機的換相頻率也因此取決于電機的轉速。在BLDCM的閉環調速系統中,以速度控制作為外環,電流控制作為內環,兩者組成雙閉環結構。外環中,通過計算相鄰信號的時間差換算成反饋轉速n,再將反饋轉速n與設定轉速n0的差值經PID計算得到設定電流I0。內環中,檢測定子繞組得到反饋電流I。設定電流I0與反饋電流I經電流調節器輸出PWM波,功率驅動器放大PWM信號后調節逆變電路的導通關斷,實現電機的運行與調速。
在運用以CCN為基礎的FPGA加速器模型時,基本的設計流程是首先確定設計目的及針對目標,然后選擇合適的CCN算法。常用的算法包括非快速算法中的空間卷積算法和通用矩陣乘法算法(General Matrix Multiplication,GEMM)以及快速算法中的快速傅里葉變換算法(Fast Fourier Transform,FFT)和Winograd算法[3]。接著在約束條件下建立數學模型并將其轉換為求最值問題,利用窮舉法、動態規劃法以及分治法等尋找最優解方案。最后根據方案中求得的參數,拓撲結構等生成FPGA系統結構。
本文設計目的主要針對無位置傳感器的BLDCM利用基于FPGA的深度學習實現自適應控制的可行性,針對目標則包括兩個方面。一方面是提高FPGA的提高數字信號處理(Digital Signal Processing,DSP)資源和內存寬帶等利用率,二是提高FPGA的計算吞吐率和執行時間等計算性能。
在CCN算法方面,其訓練過程首先進行網絡權值的初始化。根據之前分析,將測量的定子繞組的電壓和電流等數據作為訓練的輸入數據,經過卷積層與池化層提取特征向量,再經過全連接層分類識別結果得到輸出值,即向前傳播階段。接著求輸出值與目標值的偏量,判斷其是否在設定范圍內,若在范圍內則訓練結束,固定權值與閥值,若超出范圍,則將誤差返回并重新計算每一層的誤差,即反向傳播階段,以此更新網絡權值并重復前傳播階段。訓練結束后,神經網絡通過大量學習得到輸出與輸入的映射關系,不再依賴兩者之間準確的數學表達式。
在數學建模方面,依據以上得到的輸出,在FPGA片上資源的約束條件下建立模型。能否充分利用FPGA片上有限的資源影響著硬件加速器的性能,一般設計時會對其片上資源進行建模以衡量資源的利用率,并作為約束條件。資源利用主要關注計算資源與內存資源。其中計算資源方面主要考慮提高DSP資源的利用,其主要在CCN中進行卷積操作,通常實際DSP的使用數量與可用DSP數量的比率決定了最大計算速率。對于內存資源,主要考慮雙極型隨機存儲器(Bipolar Random Access Memory,BRAM)與內存寬帶的利用。BRAM用作輸入和輸出數據的緩存區,設計時要確定FPGA片上數據所能存儲的最大值。內存寬帶影響數據的傳輸速率,即CCN單層計算時數據的交換速率是否與計算吞吐率相匹配。計算性能方面,判斷單個FPGA能否滿足電機傳遞的電壓電流數據對計算吞吐率的需求,若利用多個FPGA來加速CCN,則還需衡量它們之間通信對計算吞吐的影響。
建立完數學模型后根據實際需求選擇合適的方法求得加速性能的最優解。窮舉法方法簡單,但花費大量時間,適合取值組合較少的情況。動態規劃法與分治法都是將原問題分解成若干子問題的求解,最后合并成原問題的最優解。其中動態規劃法分解后的子問題之間相互聯系,使用迭代法求解,而分治法的子問題之間則相互獨立,使用遞歸法求解。
數學建模中關鍵參數的選擇同樣影響公式最終的結果,其主要依據優化策略的選取。計算優化方面,一是針對CCN中的計算并行以提高FPGA的加速性能,包括網絡間層與層之間的并行,不同輸出特征圖之間的并行,特征圖中像素點間以及像素點內計算的并行。在優化需要注意FPGA片上存儲資源能否存儲并傳輸計算時所有的操作數以及計算資源能否支持設定的特征圖及像素的同時計算。二是針對循環分塊與展開,循環分塊將循環分成多個子循環以減少訪問內存的次數,循環展開則提高計算并行的計算量,但循環分塊大小會影響計算并行,所以分塊大小會作為模型中的關鍵參數。
內存優化方面,由于FPGA片上存儲資源無法存儲計算中生成的所有數據,需要與片下存儲頻繁進行數據交互,更加消耗資源。一是使用單層內的數據復用,而非全部將卷積神經網絡層與層之間的中間計算結果存儲在片外存儲中,再進行訪問。二是在不犧牲準確度的情況下用位數相對較少的定點數代替32位或64位浮點數的形式,從而降低操作數的位數,減少片下資源訪問次數,增加存儲數據量與計算吞吐量。三是CNN中計算單元間的數據通信充分使用FPGA片上存儲資源,減少對片外資源的訪問,提高其執行效率。
BLDCM中采用神經網絡和模糊控制等人工智能算法的無位置傳感器控制方法,因具有強大的自學能力而前景廣闊。本文探討了基于FPGA加速器的BLDCM控制系統的可行性,在說明以CCN為模型的FPGA加速特點和轉子位置檢測方法的基礎上闡述了控制系統基本的設計流程與優化策略。