疏成 成 ,蘇建 徽 ,施 永 ,解 寶 ,賴紀(jì)東
(1.光伏系統(tǒng)教育部工程中心,安徽 合肥 230009;2.合肥工業(yè)大學(xué) 電氣與自動(dòng)化工程學(xué)院,安徽 合肥 230009)
半實(shí)物實(shí)時(shí)仿真的技術(shù)有兩種方式:一種是快速控制原型(Rapid Control Prototyping,RCP)采用“虛擬控制器+實(shí)際對(duì)象”方式;另一種是硬件在回路(Hardware in Loop,HIL)采用“實(shí)際控制器+虛擬對(duì)象”方式,主要應(yīng)用于電力電子系統(tǒng)控制器軟件的開(kāi)發(fā)。半實(shí)物實(shí)時(shí)仿真的應(yīng)用領(lǐng)域非常廣泛,涉及軌道交通、風(fēng)電、光伏發(fā)電、新能源汽車(chē)、電力系統(tǒng)、工業(yè)傳動(dòng)等[1-5]。半實(shí)物仿真的硬件在回路(HIL)仿真的方式是將數(shù)學(xué)化的實(shí)體模型和實(shí)際控制器聯(lián)系在一起運(yùn)行的仿真系統(tǒng)[6-7]。相對(duì)于純計(jì)算機(jī)軟件仿真,半實(shí)物仿真具有有效性、可重復(fù)性、經(jīng)濟(jì)性、安全性等諸多優(yōu)點(diǎn),是一種更接近實(shí)際情形的仿真技術(shù)[8-11]。
平臺(tái)采用“FPGA+ARM”作為下位機(jī),用以太網(wǎng)方式和LabVIEW 上位機(jī)通信,實(shí)現(xiàn)在同一網(wǎng)絡(luò)下下載模型,很大程度降低了用戶使用的難度,讓學(xué)生用模型做實(shí)驗(yàn)更加便捷。
半實(shí)物實(shí)時(shí)仿真平臺(tái)是基于HIL 仿真方式設(shè)計(jì)而成的,主要由三部分組成:硬件系統(tǒng)、實(shí)物軟件模型和上位機(jī)系統(tǒng)。硬件系統(tǒng)主要用于采集和處理各種信號(hào),通過(guò)FPGA 和ARM 構(gòu)建一個(gè)基本的通信平臺(tái),保證通信的可靠性和穩(wěn)定性,并擁有豐富的I/O 接口提升其擴(kuò)展性。硬件系統(tǒng)通過(guò)以太網(wǎng)的方式與上位機(jī)系統(tǒng)建立通信,進(jìn)行數(shù)據(jù)傳輸。在硬件系統(tǒng)的基礎(chǔ)上,上位機(jī)軟件主要完成硬件系統(tǒng)的相關(guān)配置、模型的參數(shù)設(shè)置、提供測(cè)試過(guò)程中的控制指令、創(chuàng)建可視化的人機(jī)交互界面等工作。上位機(jī)軟件的存在大大提高了整個(gè)半實(shí)物實(shí)時(shí)仿真平臺(tái)的易用性。實(shí)物軟件模型是根據(jù)需要測(cè)試的實(shí)物設(shè)計(jì)出不同的實(shí)物模型,來(lái)配合硬件系統(tǒng)完成半實(shí)物實(shí)時(shí)仿真。該半實(shí)物實(shí)時(shí)仿真平臺(tái)的原理示意圖如圖1 所示。本文的平臺(tái)可以在上位機(jī)軟件中選擇實(shí)物模型,將其下載到FPGA 中,通過(guò)上位機(jī)進(jìn)行參數(shù)的設(shè)置和仿真的啟停等控制指令。仿真開(kāi)始后,F(xiàn)PGA 可以得到實(shí)物模型實(shí)時(shí)運(yùn)行的數(shù)據(jù)。數(shù)據(jù)會(huì)在ARM 程序中進(jìn)行打包處理,然后通過(guò)以太網(wǎng),將打包后的數(shù)據(jù)發(fā)給上位機(jī)軟件。上位機(jī)對(duì)仿真的數(shù)據(jù)進(jìn)行解析、轉(zhuǎn)換格式等處理后,就會(huì)在虛擬示波器上顯示相應(yīng)曲線波形。
圖1 HIL 系統(tǒng)仿真平臺(tái)原理圖
本文的半實(shí)物仿真平臺(tái)使用的是Xilinx 公司Zynq7000 系列的XC7Z020-2CLG400I 的(FPGA+ARM)芯片。Zynq7000 芯片可分為Processor System(PS)處理系統(tǒng)部分和Programmable Logic(PL)可編輯邏輯部分。PL 部分加載了FPGA 的程序,可以實(shí)時(shí)運(yùn)行實(shí)物模型,得到相應(yīng)的測(cè)試點(diǎn)數(shù)據(jù)。測(cè)試點(diǎn)的數(shù)據(jù)會(huì)保存在特定的地址區(qū)。PS 部分加載了ARM 的程序,是上位機(jī)程序和FPGA之間溝通的橋梁,主要有兩個(gè)功能:(1)解析上位機(jī)軟件下發(fā)的控制指令和參數(shù),并通過(guò)一定的邏輯關(guān)系進(jìn)行對(duì)FPGA 控制;(2)在數(shù)據(jù)內(nèi)存滿時(shí)觸發(fā)中斷程序,對(duì)數(shù)據(jù)進(jìn)行打包,發(fā)送給上位機(jī)。
搭建實(shí)物模型的步驟如下所示:
(1)根據(jù)該實(shí)物模型相關(guān)的數(shù)學(xué)公式和要求,選擇自己的建模方法。
(2)根據(jù)數(shù)學(xué)公式,使用System Generator 軟件進(jìn)行實(shí)物模型的搭建,生成Verilog 工程文件。
(3)根據(jù)實(shí)物模型生成的Verilog 工程文件,通過(guò)軟件創(chuàng)建新項(xiàng)目,在新項(xiàng)目里為模型建立IP 核和相應(yīng)接口配置,和通信模塊一起生成Bit 文件。將Bit 文件、相關(guān)參數(shù)配置文件和實(shí)物模型拓?fù)鋱D按一定要求存放在上位機(jī)軟件指定目錄下。
LabVIEW 是圖形化的G 語(yǔ)言的編寫(xiě)程序,利用框圖式的程序來(lái)代替冗長(zhǎng)的語(yǔ)言代碼,能夠快速地創(chuàng)建算法來(lái)解決各種工程問(wèn)題,而且人機(jī)交互界面操作簡(jiǎn)易,可以幫助用戶快速上手操作。本文的半實(shí)物實(shí)時(shí)仿真平臺(tái)的上位機(jī)軟件是基于LabVIEW 進(jìn)行編寫(xiě)的[12-14]。上位機(jī)軟件所采用的框架是“生產(chǎn)者+消費(fèi)者”。生產(chǎn)者-事件結(jié)構(gòu)根據(jù)用戶的按鍵等動(dòng)作進(jìn)行觸發(fā)中斷,隊(duì)列負(fù)責(zé)將相應(yīng)中斷和中斷包含的數(shù)據(jù)傳至條件結(jié)構(gòu),消費(fèi)者-條件結(jié)構(gòu)通過(guò)中斷類(lèi)型進(jìn)行判斷,進(jìn)入不同的算法模塊和功能模塊。
其軟件的功能設(shè)計(jì)主要包括三大模塊,分別為模型選用和參數(shù)設(shè)置模塊、虛擬示波器模塊和以太網(wǎng)通信及數(shù)據(jù)處理模塊,可實(shí)現(xiàn)仿真啟??刂啤⒛P屯?fù)鋱D顯示、數(shù)據(jù)存儲(chǔ)及追溯等常用功能。上位機(jī)軟件主程序流程圖如圖2 所示,中斷處理模塊包含了虛擬示波器模塊。
圖2 主程序流程圖
模型選用和參數(shù)設(shè)置模塊負(fù)責(zé)實(shí)驗(yàn)所用的模型及其參數(shù)的管理,采用配置文件的方式保存各種實(shí)驗(yàn)?zāi)P偷奈募蛥?shù)信息。當(dāng)導(dǎo)入一個(gè)模型時(shí),通過(guò)NI 的“遞歸文件列表”索引出該模型文件夾下所有文件名和路徑,再通過(guò)“文本讀取文件”和“讀取JPEG 文件”的控件將模型參數(shù)和拓?fù)鋱D讀取并顯示在前面板。而且用戶可以在該模塊上對(duì)實(shí)驗(yàn)?zāi)P偷膮?shù)和測(cè)試點(diǎn)的信息進(jìn)行設(shè)置,然后將所有參數(shù)信息按變量名區(qū)分后打包傳輸給ARM,ARM 通過(guò)協(xié)議解析變量,將其參數(shù)賦值到FPGA 指定變量地址區(qū)中。FPGA 中的模型參數(shù)是通過(guò)讀取指定變量區(qū)的值進(jìn)行確定的。模型選擇模塊流程圖如圖3 所示。上位機(jī)的Boost 模型選用模塊界面如圖4 所示。
圖3 模型選擇模塊流程圖
圖4 Boost 模型選用模塊界面
虛擬儀器技術(shù)是通過(guò)利用高性能的硬件和高效靈活的軟件進(jìn)行各種測(cè)試、自動(dòng)化的應(yīng)用。虛擬示波器根據(jù)這原理設(shè)計(jì)制作而成,利用軟件創(chuàng)建完全自定義的用戶界面,模塊化硬件能方便地提供全方位的系統(tǒng)集成,標(biāo)準(zhǔn)化的軟硬件平臺(tái)可以滿足同步和定時(shí)應(yīng)用的需求。本文的虛擬示波器是基于傳統(tǒng)示波器的功能結(jié)合半實(shí)物仿真平臺(tái)所需功能上進(jìn)行設(shè)計(jì)的,融合了虛擬儀器的特點(diǎn),在計(jì)算機(jī)上實(shí)現(xiàn)波形的顯示并進(jìn)行波形處理。其主要有以下功能:
(1)多通道實(shí)現(xiàn)
根據(jù)半實(shí)物仿真的特點(diǎn),本文的軟件設(shè)計(jì)了多通道的示波器,可以最多同時(shí)解析20 組數(shù)據(jù)包及其他變量狀態(tài)。選用NI 示波器組件中的“XY 圖”,根據(jù)該示波器的特性,開(kāi)辟20 個(gè)浮點(diǎn)型的二維數(shù)組,每個(gè)二維數(shù)組對(duì)應(yīng)保存著每條曲線數(shù)據(jù)和步長(zhǎng)數(shù)據(jù),前10 組保存電流曲線,后10 組保存電壓曲線。通過(guò)圖4 的測(cè)試點(diǎn)的選擇,得到所需要顯示曲線的變量名,再與ARM 傳輸過(guò)來(lái)的數(shù)據(jù)包對(duì)比,得到相應(yīng)測(cè)試點(diǎn)的曲線數(shù)據(jù)。將每條曲線數(shù)據(jù)與步長(zhǎng)數(shù)據(jù)結(jié)合成二維數(shù)組元素,然后將所有元素按順序組成的新二維數(shù)組,并賦值給示波器組件的局部變量,進(jìn)行曲線顯示。
(2)步長(zhǎng)設(shè)置
步長(zhǎng)是虛擬示波器水平方向(X 軸)上所代表的時(shí)間間隔,也是實(shí)物模型在FPGA 的運(yùn)行步長(zhǎng)。示波器的默認(rèn)步長(zhǎng)為該模型配置文件中的最小步長(zhǎng),最小步長(zhǎng)由事先的實(shí)驗(yàn)得出。也可以通過(guò)界面上的“步長(zhǎng)設(shè)置”初步設(shè)置其步長(zhǎng),當(dāng)將步長(zhǎng)信息傳輸?shù)紸RM 中時(shí),由ARM 對(duì)FPGA 中的模型進(jìn)行步長(zhǎng)設(shè)置,若設(shè)置成功,ARM 會(huì)給上位機(jī)發(fā)送相應(yīng)的置1 信號(hào),若沒(méi)有設(shè)置成功,則會(huì)發(fā)0信號(hào)。上位機(jī)通過(guò)接收信號(hào)判斷步長(zhǎng)是否設(shè)置成功,若成功則該設(shè)置的步長(zhǎng)為最終步長(zhǎng),而且X 軸的相應(yīng)步長(zhǎng)變換為該值,若失敗則保持X 軸的事先步長(zhǎng)不變且彈出提示框告知需要重新設(shè)置步長(zhǎng)。
(3)波形顯示、存儲(chǔ)、清空
由于是虛擬示波器界面,波形的顯示與傳統(tǒng)示波器有差異,在波形顯示的過(guò)程中,通過(guò)“XY 圖”示波器的“圖例”和“圖形控制選板”控件,對(duì)顯示的波形進(jìn)行放大、縮小、局部放縮。在主程序中編寫(xiě)示波器的開(kāi)始賦值、停止賦值、清空數(shù)據(jù)和保存數(shù)據(jù)的中斷程序,實(shí)現(xiàn)前面板示波器的開(kāi)始和停止操作。實(shí)驗(yàn)完成后對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行存儲(chǔ)和清空操作。
3.3.1 模型的下載方式
模型下載比較簡(jiǎn)單的方式是通過(guò)JTAG 口進(jìn)行燒寫(xiě),將模型固化在FPGA 中,即將固定的幾種模型文件保存在FPGA的存儲(chǔ)單元。這種方式存在著一些缺陷,由于存儲(chǔ)空間的限制,模型數(shù)量有限且模型變化和擴(kuò)展困難。本文的方式是模型以規(guī)定的文件數(shù)據(jù)格式存儲(chǔ)在上位機(jī)硬盤(pán)或其他移動(dòng)存儲(chǔ)單元中,通過(guò)以太網(wǎng)更新Flash的方式,將模型的文件從上位機(jī)下載到FPGA 中。
上位機(jī)會(huì)通過(guò)LabVIEW 中的“讀取文本文件”的函數(shù)來(lái)讀取所選模型的Bit 文件內(nèi)容,并通過(guò)以太網(wǎng)通信將模型Bit 文件內(nèi)容和update 指令傳輸給ARM。ARM 通過(guò)上位機(jī)下發(fā)的update 的指令,觸發(fā)ARM 的Flash 寫(xiě)的函數(shù),將Bit 文件內(nèi)容燒到Flash 中。
ARM 程序中需要一個(gè)單獨(dú)程序負(fù)責(zé)Flash 寫(xiě)的使能及關(guān)閉、Flash擦除、Flash 讀、Flash 寫(xiě)、讀Flash ID等操作。當(dāng)更新Flash 結(jié)束后再反饋上位機(jī)一個(gè)下載模型是否成功的信號(hào)。
3.3.2 以太網(wǎng)通信及數(shù)據(jù)處理模塊設(shè)計(jì)
核心控制板上利用Realtek RTL8211E-VL 的以太網(wǎng)PHY 芯片進(jìn)行網(wǎng)絡(luò)通信。PS 端BANK501 的GPIO 接口上連接著PHY 芯片。RTL8211E-VL 芯片支持10/100/1 000 Mb/s 傳輸速度的以太網(wǎng),它通過(guò)RGMII 接口與PS部分的 MAC 層進(jìn)行通信。RTL8211E-VL 芯片支持傳輸速度自適應(yīng)、Master/Slave 自適應(yīng)、MDI/MDX 自適應(yīng),并且允許MDIO 總線對(duì)PHY 的寄存器進(jìn)行管理。RTL8211E-VL 上電后會(huì)進(jìn)行部分特定IO 的電平的狀態(tài)檢測(cè),從而確定其工作模式。表1 為PHY 芯片上電后的默認(rèn)設(shè)定信息。
表1 PHY 芯片默認(rèn)配置值
上位機(jī)軟件與ARM 通信的過(guò)程中,上位機(jī)作服務(wù)器,ARM 作客戶端,上位機(jī)設(shè)置端口號(hào)進(jìn)行監(jiān)聽(tīng),ARM 通過(guò)IP 地址和端口號(hào)連接上服務(wù)器。通信的數(shù)據(jù)分為控制指令、參數(shù)數(shù)據(jù)、模型文件內(nèi)容和波形數(shù)據(jù),上位機(jī)與ARM通信的數(shù)據(jù)格式都是字符串,為了保證消息傳輸過(guò)程不會(huì)失真,兩邊的程序都針對(duì)傳輸數(shù)據(jù)進(jìn)行頭尾固定字符串校驗(yàn)和整個(gè)數(shù)據(jù)長(zhǎng)度進(jìn)行校驗(yàn),如果校驗(yàn)不通過(guò),則放棄這個(gè)包的數(shù)據(jù)。以太網(wǎng)通信模塊數(shù)據(jù)處理程序流程圖如圖5 所示。
圖5 以太網(wǎng)通信模塊數(shù)據(jù)處理程序流程圖
為了避免通信過(guò)程中存在數(shù)據(jù)解析速率問(wèn)題導(dǎo)致的丟包問(wèn)題,上位機(jī)采用并行數(shù)據(jù)處理方法。設(shè)立了數(shù)據(jù)緩存區(qū)和數(shù)據(jù)解析區(qū),數(shù)據(jù)解析區(qū)無(wú)數(shù)據(jù)包解析時(shí)給置位信號(hào),數(shù)據(jù)緩存區(qū)不斷地接收下位機(jī)傳送的數(shù)據(jù)包,當(dāng)出現(xiàn)置位信號(hào)時(shí),將前5 組數(shù)據(jù)包發(fā)給數(shù)據(jù)解析區(qū)。FPGA 讀取的1 個(gè)波形數(shù)據(jù)由4 個(gè)16 進(jìn)制的數(shù)據(jù)組成,出于提高下位機(jī)工作效率的考慮,ARM 程序并未對(duì)數(shù)據(jù)進(jìn)行解析處理,直接將數(shù)據(jù)打包傳給上位機(jī)。因此,上位機(jī)軟件對(duì)波形數(shù)據(jù)進(jìn)行單獨(dú)的算法解析。
Buck 電路是一種常用的DC/DC 變換的基本電路。下面是以Buck 電路模型為例進(jìn)行的實(shí)驗(yàn)驗(yàn)證,Buck 電路拓?fù)鋱D如圖6 所示。PWM 驅(qū)動(dòng)信號(hào)由外置信號(hào)發(fā)生器提供[15]。
圖6 Buck 電路拓?fù)鋱D
將PWM 信號(hào)頻率設(shè)為100 kHz,占空比為0.4。將下位機(jī)與上位機(jī)連接在同一網(wǎng)絡(luò)下,運(yùn)行上位機(jī)時(shí),點(diǎn)擊“模型選擇”按鈕,進(jìn)入圖4 界面,點(diǎn)擊“導(dǎo)入模型”并選用Buck 模型。在上位機(jī)將參數(shù)分別設(shè)置為:U1=12 V,R=5 Ω,L=200 μH,C=50 μF,步長(zhǎng)設(shè)置為0.25 μs。然后選擇U2為測(cè)試點(diǎn),點(diǎn)擊“下載模型”,在圖7 所示的前面板中先點(diǎn)擊“仿真開(kāi)始”按鈕然后點(diǎn)擊左下角的“開(kāi)始”按鈕,仿真開(kāi)始運(yùn)行,并有U2的曲線輸出顯示。
為驗(yàn)證實(shí)時(shí)仿真波形的正確性,在MATLAB環(huán)境下進(jìn)行了同樣參數(shù)的仿真,并與半實(shí)物實(shí)時(shí)仿真平臺(tái)上的同一測(cè)試點(diǎn)波形進(jìn)行了對(duì)比,圖8 為MATLAB 離線仿真波形。圖7 為上位機(jī)實(shí)時(shí)仿真波形,表2 為實(shí)驗(yàn)波形分析表,對(duì)比實(shí)驗(yàn)表明,該實(shí)時(shí)仿真結(jié)果是正確的,說(shuō)明實(shí)驗(yàn)仿真平臺(tái)達(dá)到設(shè)計(jì)要求。
表2 實(shí)驗(yàn)波形分析表
圖7 上位機(jī)電壓U2 實(shí)時(shí)仿真波形
圖8 MATLAB 電壓U2 仿真波形
基于LabVIEW 上位機(jī)軟件和FPGA 設(shè)計(jì)的電力電子半實(shí)物實(shí)時(shí)仿真教學(xué)實(shí)驗(yàn)平臺(tái),其操作靈活性和性能指標(biāo)滿足教學(xué)與科研需求。利用LabVIEW 實(shí)現(xiàn)模型下載、參數(shù)設(shè)置以及仿真啟停等控制指令的下發(fā),并接收ARM 程序通過(guò)以太網(wǎng)上傳的數(shù)據(jù),在虛擬示波器上顯示相應(yīng)曲線波形,具有模型擴(kuò)展方便、功能擴(kuò)展容易等特點(diǎn)。利用FPGA 的高速運(yùn)算能力對(duì)模型進(jìn)行迭代計(jì)算,并將得到的數(shù)據(jù)進(jìn)行打包處理,通過(guò)以太網(wǎng)上傳給上位機(jī)軟件,實(shí)現(xiàn)了實(shí)時(shí)仿真的快速性和各點(diǎn)波形上傳。上位機(jī)系統(tǒng)的設(shè)計(jì)主要包括了三大功能模塊:模型選用和參數(shù)設(shè)置模塊、虛擬示波器模塊和以太網(wǎng)通信及數(shù)據(jù)處理模塊。相比于將模型固化于FPGA 中的設(shè)計(jì)方法,提出的通過(guò)以太網(wǎng)更新Flash 的方式將模型文件從上位機(jī)下載到FPGA 中,解決了模型數(shù)量有限且模型變化和擴(kuò)展困難問(wèn)題。系統(tǒng)通過(guò)典型Buck 電路模型HIL 實(shí)時(shí)仿真實(shí)驗(yàn),步長(zhǎng)為250 ns,驗(yàn)證了實(shí)驗(yàn)平臺(tái)的準(zhǔn)確性。