被廣泛使用於工業、汽車業及商業應用的電動馬達,是藉由能夠變化其電力輸入功率的驅動器,來控制其力矩、速度及位置。高性能馬達驅動器可以增加效能,並提供較快及更精確的控制。先進的馬達控制系統結合了控制演算法、工業網路及使用者介面,因此它們需要額外的處理能力來即時執行所有的工作。多晶片架構通常會被用來實現現代的馬達控制系統:一個數位信號處理器(DSP)負責執行馬達控制演算法、一個FPGA負責完成高速I/O及網路協定、以及一個微處理器負責管理類的處理控制。[1]
藉由諸如Xilinx Zynq All Programmable(完全可編程)SoC這類的系統單晶片(SOC)的出現, 由於結合了CPU的多功能性及FPGA的處理能力,設計者現在已能夠將馬達控制功能及額外的處理功能整合到單一的晶片中。控制演算法、網路及其它處理密集型功能的重擔便可轉移到可編程邏輯,而監督控制、系統監視與診斷、使用者介面、以及調試(commissioning)則可由處理單元來負責。可編程邏輯可包含平行運行的多控制核心,以便實現多軸機器或多控制系統。藉由將完整的控制器實現於單一晶片上,得以讓硬體設計更為容易、更可靠及更省成本。
近年來,軟體模型化及模擬工具,像是MathWorks的Simulink,已讓模型化(model-based)的設計演進到完整的設計流程─亦即從模型創建一直到完成。[2]這種改變工程師及科學家工作方式的模型化設計,正在將設計任務從實驗室及現場,移往到桌上電腦上。現在, 整個系統 - 包括受控體(plant)及控制器─已可以被模型化,讓工程師能在部署到現場之前調整控制器的行為。這降低了損害風險、加速了系統整合、並減少了對設備可用性的依賴程度。一旦控制器模型被完成, Simulink環境可自動將它轉為能夠在控制系統上執行的C及HDL代碼,不但節省了時間,也避免了人工編碼的錯誤。此外,將系統模型連結到能夠觀察控制器在真實狀況條件中會如何動作的快速原型環境,還可進一步降低風險。
一套可提高馬達控制性能的完整開發環境,使用到的軟體包含:由Xilinx提供用來完成控制器的Zynq SoC、由MathWorks提供用來進行模型化設計及自動代碼產生的Simulink、以及由ADI提供用來進行驅動系統快速原型建立的Intelligent Drives Kit。
Xilinx FPGA與SoC馬達控制解決方案
先進的馬達控制系統必須執行控制、通信及使用者介面等工作的結合,而此每一個工作都有不同的處理頻寬需求及即時性上的限制。被選用來實現這類控制系統的硬體平台必須堅固且具擴展性, 又同時能容許後續的系統改善及擴張。Zynq的完全可編程SoC實現了這些需求,它結合了一高性能處理系統與可編程邏輯,如圖1所示,此一結合提供了優越的平行處理能力、即時性能、快速運算、及多樣性連結等特點。此SoC也整合了兩個Xilinx類比數位轉換器(XADC),以供系統監視或外部類比感測器的使用。
Zynq的處理端包含了一個雙核ARM Cortex-A9處理器、一個NEON共同處理器、以及可以加速軟體執行的浮點延展。處理系統負責對應諸如監督控制、動作控制、系統管理、使用者介面、及遠端維修等這些非常適於用軟體來實現的功能。嵌入式Linux或即時作業系統則可被部署以發揮系統的能力。自足式(self-contained)處理器可在不需設置可編程邏輯的情況下被使用,這讓軟體開發人員能夠與負責FPGA結構設計硬體工程師平行地進行編碼。
在可編程的邏輯端,有高達444,000個邏輯元(cell)及2200個DSP片段(slice),可提供很大的處理頻寬。FPGA結構(fabric)具有可伸縮性, 因此使用者能選用的,可從小到只有28,000邏輯元的產品,一路到可對應最具挑戰的信號處理應用的高端產品。5個AMBA-4 AXI高速互連結(interconnects)將可編程邏輯緊密地互耦到處理系統,提供了同等於3000pins以上的有效頻寬。可編程邏輯適合於實現時間緊迫且需密集處理的工作,如即時工業乙太網協定,且它可適應多軸機器或多控制系統中的平行運作多控制核心。
Xillinx全可編程SoC解決方案及平台,能夠符合現今諸如現場導向控制(field oriented control, FOC)之類的複雜控制演算法,以及諸如Xilinx與Qdesys所設計的再生(regenerative)脈衝頻率調變 [3] 之類的複雜調變體系,所要求的關鍵時序及性能。
使用MathWorks的Simulink進行模型化設計
Simulink是一種方塊圖環境,可進行多領域模擬及模型化設計,特別適合用來模擬包含控制演算法及受控體(plant)模型的系統。馬達控制演算法能調節速度、力矩、及其它參數,通常是用在精準定位上。使用模擬方法來評估控制演算法,是一種判斷馬達控制設計適合性的有效方式,且能在投入昂貴的硬體測試之前,降低演算法的開發時間與成本。圖2描述了設計馬達控制演算法的有效工作流程:
‧ 建立精準的控制器及受控體模型,通常是從馬達、驅動器、感測器、及負載的元件庫開始
‧ 模擬系統行為以確認控制器是否如預期般動作
‧ 產生C代碼及HDL供即時測試及完成
‧ 使用原型硬體來測試控制演算法
‧ 一旦控制系統已在原型硬體上透過模擬及測試,證實是符合需求的,即可將控制器佈局到最終的量產系統上.
MathWorks的產品包括了Control System Toolbox、SimPowerSystems,以及Simscape,它們能為線性控制系統的系統化分析、設計及調整,提供業界標準的演算法則及應用,並提供元件庫及分析工具,供模型化及模擬跨越於機械、電子、水力及其它物理領域的系統。這些工具提供了能夠建立高真實性的受控體及控制器的模型化方法,以在進入實際完成前可以驗證控制系統的行為及性能。模擬環境是一個能夠用來驗證功能性邊界條件(functionality corner cases)及極端動作條件的完美場合,它能確保控制器已針對如此的情況準備好,並也確保在真實狀況的動作下,設備與操作人員都很安全。
一旦控制系統已透過模擬環境中的嵌入編碼器及HDL編碼器工具加以完全確認過,它就可以被翻譯成C代碼及HDL,並佈局到原型硬體來進行測試以及之後的最終量產系統上。此時,諸如定點及時序行為(timing behavior)需求之類的軟體與硬體的實施法(implementation)會明確化。自動代碼產生可協助減少從概念到實際系統完成、消除編碼錯誤、以及確保實際完成品能符合其模型等所需的時間。圖3描述了在Simulink中模型化馬達控制器,並將它轉換為最終量產系統的真實作業步驟。
第一個步驟是要在Simulink中模型化並模擬控制器及受控體(plant)。在此階段時,控制器演算法被分割為多個將以軟體來完成的方塊,以及多個將以可編程邏輯來完成的方塊。一旦分割及模擬完成,控制器模型會透過嵌入編碼器及HDL編碼器被轉換成C代碼及HDL。接著,Zynq基底的原型系統可確認控制演算法的性能,並在進入量產階段前,幫助進一步調整控制器模型。到了量產階段時,自動產生出來的C代碼及HDL會被整合入複雜的量產系統框架。此一流程能確保當控制演算法在達到量產階段時,它已被完整的驗證及測試過,因而提供了系統堅固可靠性上的高信心度。
使用ADI的Intelligent Drives Kit來完成快速原型
選擇正確的原型硬體是設計過程中的一個主要步驟,ADI的Intelligent Drives Kit(智慧型驅動器套件)能實現快速而有效率的原型製作。透過將Zynq-7000 All Programmable SoC ARM雙核Cortex-A9 + 28nm可編程邏輯,與最新一代的ADI高精確度資料轉換及數位隔離兩方的結合, Avnet Zynq-7000 All Programmable SoC / ADI Intelligent Drives Kit可實現高性能馬達控制及雙gigabit乙太工業網路的連結。此套件包含一Avnet的ZedBoard 7020 基板,以及ADI的AD-FMCMOTCON1-EBZ模組,此模組為完整的驅動系統,能為多種類型的馬達提供有效的控制。此外,此套件能經由ADI的AD-DYNO1-EBZ動力計(dynamometer)驅動系統,也就是一種可用來測試即時馬達控制性能的動態可調負載,來加以擴展。AD-FMCMOTCON-EBZ模組包含了控制器及驅動電路板,如圖4所示。
圖4 : AD-FMCMOTCON1-EBZ的方塊圖 |
|
控制電路板是一款混合信號的FPGA小板卡(FPGA Mezzanine Card,FMC),被設計來透過低腳數(LPC)或高腳數(HPC)FMC接頭連接到任何Xilinx的FPGA或SoC平台。它的特點有:
‧ 使用隔離的ADC來進行電流或電壓量測
‧ 隔離式Xilinx XADC介面
‧ 完全隔離型數位控制及回授信號
‧ 霍爾、差動式霍爾、編碼器及解角器(resolver)的介面
‧ 2-Gb乙太網PHY以實現高速工業通訊協定,如EtherCAT、ProfiNET、Ethernet/IP、或Powerlink
‧ FMC信號電壓調適介面,以便在所有的FMC電壓位準上的無縫動作
隔離是任何馬達控制系統中的一項關鍵層面,藉以保護控制器及使用者。在控制電路板上完全的類比與數位信號的隔離,能確保FPGA平台隨時受到保護,避免來自馬達驅動端的危險電壓。
驅動電路板包含了所有驅動馬達所需的電力電子,以及電流與電壓的感測及保護電路。此板的特點為:
‧ 在12-V到48-V的電壓範圍及18-A的最大電流下,驅動BLDC(無刷直流)/PMSM(永磁同步馬達)/整流式直流/步進等各類馬達
‧ 動態煞車能力及整合的過電流與反電壓保護
‧ 使用隔離式ADC進行相位電流量測;可編程增益放大器將電流量測範圍加以最大化
‧ 提供DC匯流排電壓、相位電流、及總電流回授信號給控制器電路板
‧ 整合BEMF零交叉(zero-crossing)偵測供PMSM或BLDC馬達的無感測器控制用
動力計(dynamometer)是一種可用來測試即時馬達控制性能的動態可調負載,它包含了兩個直接透過一牢固的連結而相互耦合的BLDC馬達。其中之一的BLDC馬達扮演負載的角色,且受控於動力計的嵌入控制系統;另一個馬達則是由ADI Intelligent Drives Kit驅動,如圖5所示。此系統,配備了一個能夠顯示有關負載電流及速度資訊的使用者介面,可容許設定不同的負載設置檔(profiles)。外部控制的實現,可透過Analog Discovery USB oscilloscope來進行負載信號捕捉, 並使用MathWorks的Instrument Control Toolbox來直接透過MATAB控制。
任何馬達控制系統的性能都會受到馬達電流及電壓量測品質很大的影響。藉由使用高性能類比信號調節(conditioning)元件及ADCs,ADI Intelligent Drives Kit可提供精準的電流及電壓量測。量測路徑如圖6所示,被區分為控制器及驅動電路板兩段。
相位電流的感測,是由量測跨在並聯分流(shunt)電阻上的電壓來完成。視ADC是否靠近並聯分壓電阻,會有兩種可能的量測通路來取得最佳的量測準確度。如果ADC靠近並聯分壓電阻,信號通路會非常短且較不易有雜訊耦合(noise coupling)。因此並聯分壓電阻上的小差動電壓可由AD7401隔離式Σ-Δ調變器直接量測,而不需額外的介面與信號調節電路。
如果ADC遠離並聯分壓電阻,信號通路會很長且容易出現雜訊耦合,特別是來自電源供應交換雜訊及馬達。此時就需特別注意,一定要確保在PC板上ADC與並聯分壓電阻之間的走線及信號調節電路須有適當的屏蔽處理。並聯分壓電阻上的小差動信號會被驅動電路板上的AD8207差動放大器加以放大,而此差動放大器設置於並聯分壓電阻附近以避免雜訊耦合。信號由全幅±125-mV的輸入範圍被放大到±2.5-V,以盡量降低耦合雜訊的影響。
放大後的信號經過使用AD8251增益可編程儀器放大器(programmable gain instrumentation amplifier,PGIA)所構成的另一個放大器階段,以確保ADC所收到的輸入信號都能被適當的縮放調整以符合其輸入範圍。經放大的類比信號經過接頭送往控制器板,此接頭包含了能將每一個類比信號的雜訊耦合降低到最小的屏蔽。來自驅動電路板的類比信號,透過ADA4084-2運算放大器被移回AD7401的輸入範圍內.
電流及電壓回授信號鏈中的最重要部份,是AD7401A二次(2nd order)隔離式Σ-Δ調變器。此高性能ADC的特點,包括沒有漏失碼(missing codes)的16位元解析度、13.3有效位元數(effective number of bits, ENOB)、以及83-dB SNR。二線數位介面包含一20-MHz時脈輸入,以及一1-位元數位位元流輸出。ADC的輸出透過一sinc3數位濾波器來重建。規格書中針對16位元輸出及78kHz取樣率,提供了一濾波器的模型及HDL完成範例,其輸出解析度及取樣率可藉由改變濾波器的模型及抽樣(decimation)來加以控制。雖然78-kHz取樣率可能對於許多應用而言已很足夠,但有些情形會需要更高的速率。
在這些情形下,如圖7所示的濾波器組(filter bank)可以將系統的取樣率提高到真實16-位元資料的10MSPS。此濾波器組含有n個sinc3濾波器,並使用經過T時間(sinc3濾波器傳遞時間除以n)的倍數延遲的取樣率。最後再由資料選擇器輸出週期與T相同的ADC碼。
相位電流量測也可以由Zynq XADC來進行。XADC信號量測鏈使用固定量測鏈的整個通路,並在AD7401 Σ-Δ調變器之後加入一Sallen-Key類比重建(reconstruction)濾波器。此濾波器是使用控制器電路板上的AD8646運算放大器所構成。隔離式Σ-Δ調變器與類比重建濾波器的結合,提供了方便且低成本的方式來達到XADC輸入信號的類比隔離,而不需犧牲到量測的品質。
ADI Intelligent Drives Kit包含了一組Simulink控制器模型、完整的Xilinx Vivado 框架(framework)、以及ADI Linux基礎架構(infrastructure),讓使用者能夠進行設計馬達控制系統時所有需要的步驟,包括從模擬開始,經過原型製作,一直到量產系統的完成。
有兩種控制器模型可供開始設計過程,一是六階(six-step)控制器,另一個則是PMSM場導向(field-oriented)的控制器。圖8所示是以最上層的角度來看這兩種控制器,六階控制器可實現BLDC馬達的梯形(trapzoidal)控制器,而FOC控制器則提供了一個可用來整合入控制系統的FOC核心。
受控體及控制性模型是在模擬階段中所創建出來的,而完整系統的動作行為會被模擬,以確認控制器會依照預期的方式動作。控制器模型被分割為由C代碼及由HDL所完成的元件,而諸如時序、定點(fixed-point)完成、取樣率、及環路次數等限制條件,則被明確定義以確保控制器模型會如同其在硬體實現中的方式動作。圖9顯示了六步控制器在軟體及HDL之間的分割。
一旦控制器經由模擬加以完全確認過,下一步就是要在硬體平台上建立它的原型。由Zynq SoC所引導的工作流程,能夠從針對ARM核心及可編程邏輯而被分割為子系統的Simulink模型,產生出C代碼及HDL。藉由此工作流程,HDL編碼器會產生針對可編程邏輯所需的HDL,而嵌入編碼器則負責產生ARM所需的C代碼。MathWorks Zynq支援包能實現:(1)ARM可執行碼的產生, 包括了來自模型且和AXI匯流排介接的演算法C代碼,以及(2)位元串流的產生,包括了來自模型且可和可編程邏輯接腳及AXI匯流排介接的HDL代碼。圖10為控制器的實現及與ADI Intelligent Drive硬體的關聯性。
一旦位元流及可執行碼被載入硬體,控制器的動作測試就可以開始。硬體迴路(hardware-in-the-loop,HIL)測試的執行,是透過Simulink及運行開放源碼Linux OS的嵌入系統之間的乙太網路連結。諸如軸轉速之類的馬達參數可被Simulink所擷取,並與模擬的結果相比較,以確保真實完成的系統能符合模型。一旦控制演算法測試完成,控制器就可以被轉移到量產系統。
除了Intelligent Drives Kit,ADI也一併提供了完整的Vivado框架及Linux基礎結構,可用在原型及最終量產上。支援Intelligent Drives Kit的Zynq基礎架構。此可編程邏輯完成了用來與ADCs、位置感測器、及馬達驅動級等介接的IP核心。由HDL編碼器所產生用來代表馬達控制演算法的HDL,被整合到Analog Devices的IP中。所有的IP都有低速AXI-Lite介面可設置及控制,以及高速AXI-Streaming介面,以容許它們透過DMA通道將即時資料傳送到軟體階層。高速乙太網介面可使用ARM處理器系統的硬體MAC週邊,或是可編程邏輯中的Xilinx乙太網路IPs來完成。
ARM Cortex A9處理系統可運行由ADI提供的Ubuntu Linux,這包括與ADI Intelligent Drive硬體介面連接時所需的Linux IIO驅動程式、供監視與控制用途的IIO Oscilloscope(Scope)使用者空間應用程式、一可實現透過TCP進行即時資料採集和系統控制的libiio伺服器、在遠端電腦上執行的客戶端(clients)程式、以及由嵌入編碼器產生的C代碼所構成的選項使用者應用程式。
所有的ADI Linux驅動程式都是基於Linux Industrial I/O(IIO)子系統, 此子系目前已包含在所有的主線(mainline)Linux核心(kernel)中。IIO Scope,一種由Analog Devices所開發且可以在Xilinx Zynq內的雙ARM Cortex A9s上運行的公開源Linux應用程式,能夠顯示從任何與Xilinx Zynq平台連結的Analog Devices FMC卡取得的即時資料。此資料的顯示方式包括有時間域、頻率域、或是星座圖等。此程式支援以一些常用的檔案格式,如comma seperated values或,mat Matlab檔案等,將捕捉到的資料儲存起來並進行分析。IIO Scope提供了圖形化使用者介面,以改變或讀回Analog Devices FMC卡的設置。
Libiio伺服器可搭配上遠端電腦上所運行的用戶端程式,實現透過TCP的即時資料擷取及系統控制。此伺服器在Linux下的嵌入目標(embedded object)上運行,並管理介於目標及遠端用戶間的TCP上即時資料交換。IIO用戶可做為系統目標,並被整合入原始MATLAB及Simulink應用中。HDMI輸出被用來在監視器上顯示Linux介面,而鍵盤及滑鼠則可接到系統的USB2.0埠。
由ADI為Intellignet Drives Kit提供的Linux軟體及HDL基礎架構,再搭配上由MathWorks及Xilinx提供的工具,對馬達控制應用的原型建立是一理想的套件。它們也包含了可量產化的元件, 可被整合入最終控制系統,來協助降低從概念到量產所需的時間與成本。
結論
本文說明了以FPGA完成現代化馬達控制系統的需求與趨勢,以及由MathWorks、Xilinx和ADI等公司所推出的工具與系統,以便符合其限制並協助推動更有效及精準的馬達控制解決方案。藉由將MathWorks所提供的模型化 的設計與自動代碼產生工具,與高能力的Xilinx Zynq SoC及ADI提供的隔離、功率、信號調節及量測解決方案兩者的結合,馬達驅動系統的設計、驗證、測試及完成可以比以往更有效率, 從而改善馬達控制性能並縮短產品上市的時間,ADI Intelligent Drives Kit與Avnet Zynq-7000 All Programmable SoC的搭配,能夠為使用MathWorks的Simullink所設計出來的馬達控制演算法,提供一極佳的原型開發環境。Intelligent Drives Kit包含了一套參考設計[4],為任何想要評估此系統的使用者提供一起始點,並協助開啟任何的新馬達控制專案。
(本文作者Andrei Cozma 及 Eric Cigan任職於亞德諾半導體)
參考文獻
[1] Hill,Tom “Motor Drives Migrate to Zynq SoC with Help from Matlab.” Xcell Journal,Issue 87, Second Quarter 2014.
[2] O’Sullivan, Dara,Jens Sorensen,and Anders Frederiksen.“Model Based Design Tools in Closed Loop Motor Control.”PCIM Europe,2014.
[3] Corradi,Dr.Giulio.“FPGA High Efficiency, Low Noise Pulse Frequency Space Vector Modulation—Part I.” EDN Network,October 04, 2012.
[4] AD-FMCMOTCON1-EBZ User Guide.