文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.172636
中文引用格式: 張琳,,梅雪松,陳勇. 基于SoC FPGA的光伏電力通信管理機系統(tǒng)[J].電子技術(shù)應(yīng)用,,2018,,44(2):32-35,43.
英文引用格式: Zhang Lin,,Mei Xuesong,,Chen Yong. Photovoltaic power communication management system based on SoC FPGA[J]. Application of Electronic Technique,2018,,44(2):32-35,,43.
0 引言
光伏發(fā)電站利用大量的光伏電池板完成從光能到直流電能的轉(zhuǎn)換,,再將直流電能使用逆變器轉(zhuǎn)換為50 Hz的交流電,,輸送到電網(wǎng)中。整個光伏電站中電能控制及轉(zhuǎn)換設(shè)備需求量巨大,。通信管理機作為電站中連接各個設(shè)備和電站中控臺的設(shè)備,,通過控制平臺控制下行的Rtu設(shè)備,實現(xiàn)遙信,、遙測,、遙控等信息的采集,將消息反饋回調(diào)度中心,,然后控制中心管理員通過對消息的處理分析,,選擇將執(zhí)行的命令,達到遠(yuǎn)動輸出調(diào)度命令的目標(biāo)[1-2]。
目前廣泛采用的通信管理機實現(xiàn)方案主要有3種:PowerPC處理器+串口擴展芯片架構(gòu),、ARM處理器架構(gòu),、ARM處理器+FPGA架構(gòu)。其中:(1)PowerPC處理器+串口擴展芯片架構(gòu)使用帶通信協(xié)處理器的PowerPC處理器作為系統(tǒng)的核心,,使用串口通信擴展芯片為PowerPC擴展出最多16個串口[3]。所有數(shù)據(jù)處理和運算全部由PowerPC處理器完成,,在所有串口全部使用的情況下,,整個系統(tǒng)運行較為緩慢,數(shù)據(jù)的實時性難以保證,。(2)使用單獨ARM處理器作為核心實現(xiàn)的通信管理機結(jié)構(gòu)簡單,,但是能夠支持的串口數(shù)量受到ARM處理器本身集成的串口數(shù)量限制,一般都不超過6個[4],,無法滿足光伏電站中海量設(shè)備的需求,。(3)ARM處理器+FPGA架構(gòu)利用FPGA完成串口擴展,基于ARM處理器完成數(shù)據(jù)的處理和網(wǎng)絡(luò)協(xié)議的實現(xiàn),,它本質(zhì)上和基于PowerPC+串口擴展芯片的方案一致,。該種方案增加了系統(tǒng)的復(fù)雜度,但單性能上提升并不明顯,。以上3種方案都存在的問題是系統(tǒng)有且僅有一個核心單元,,一旦系統(tǒng)宕機,就不得不重啟系統(tǒng),,在系統(tǒng)未恢復(fù)的情況下,,整個系統(tǒng)與電站中心控制臺處于完全斷開的狀態(tài),無法接收中心控制臺的控制指令,。
本文基于Intel全新的SoC FPGA芯片,,將原本采用分立的FPGA和ARM處理器實現(xiàn)的系統(tǒng)使用單一的SoC FPGA芯片實現(xiàn),并在FPGA上搭建了冗余監(jiān)控系統(tǒng),。在提高系統(tǒng)性能的同時,,保證了系統(tǒng)的在線可恢復(fù)性。
1 系統(tǒng)建模
Intel Cyclone V SoC FPGA芯片5CSEMA4U23C6芯片是一款在單一芯片上集成了高性能的雙核ARM Cortex-A9 CPU和FPGA的SoC芯片,,它是本系統(tǒng)的核心單元,。
在本系統(tǒng)中,SoC FPGA芯片上的FPGA部分主要負(fù)責(zé)UART接口的擴展以及MODBUS協(xié)議的加速,。
在電力系統(tǒng)中,,幾乎所有設(shè)備都支持標(biāo)準(zhǔn)的RS485接口,并使用MODBUS協(xié)議與其他設(shè)備進行通信,。光伏電站中,,因為設(shè)備多、數(shù)據(jù)量大,,通信管理機的一個RS485端口在同一時刻只能和一臺設(shè)備通信,,因此導(dǎo)致數(shù)據(jù)傳輸速度出現(xiàn)瓶頸,。為了解決這個問題,往往采用多個MODBUS網(wǎng)絡(luò)端口來實現(xiàn)眾多設(shè)備的管理[2],。
眾多電力設(shè)備的數(shù)據(jù)在被通信管理機采集之后最終需要通過以太網(wǎng)接口與電站的中控后臺進行數(shù)據(jù)交互,,該數(shù)據(jù)交互主要通過IEC104協(xié)議實現(xiàn),而IEC104協(xié)議的實現(xiàn)是通過SoC FPGA中的硬件處理系統(tǒng)(Hard Process System,,HPS)運行成熟的Linux操作系統(tǒng)來完成的,。
2 硬件電路方案設(shè)計
2.1 SoC FPGA 配置電路設(shè)計
為了使系統(tǒng)支持遠(yuǎn)程在線升級,本系統(tǒng)設(shè)置SoC FPGA的FPGA部分接收HPS部分的配置數(shù)據(jù),。HPS部分可以接收串口或者網(wǎng)口傳輸?shù)腇PGA配置文件,。運行時SoC FPGA的HPS部分先啟動并運行Linux操作系統(tǒng),Linux操作系統(tǒng)啟動完畢之后進行FPGA部分的配置,。如果需要遠(yuǎn)程更新FPGA的配置數(shù)據(jù),,只需要通過網(wǎng)口將新的FPGA配置內(nèi)容傳輸?shù)讲僮飨到y(tǒng)所管理的磁盤上替換原來的配置文件,則系統(tǒng)下一次啟動時就可以使用新的配置文件來配置FPGA,。
2.2 SoC FPGA啟動電路設(shè)計
SoC FPGA中的HPS部分運行Linux操作系統(tǒng),,HPS支持從SD卡、QSPI Flash,、NAND Flash存儲器中啟動,。NAND Flash和QSPI Flash存儲器一般都采用焊接的方式安裝在電路板上,而SD卡則是可拆卸并單獨在PC上讀寫的,。在工業(yè)現(xiàn)場,,如果設(shè)備系統(tǒng)一旦損壞,需要重新燒錄系統(tǒng)時,,QSPI Flash和NAND Flash由于焊接在PCB板上,,只能使用PC在線燒寫,而SD卡則可以采用預(yù)先燒錄好系統(tǒng)的SD卡進行更換,,因此節(jié)省了現(xiàn)場維修的工作量,。
2.3 RS485接口電路設(shè)計
通信管理機作為一個工業(yè)設(shè)備,其通信接口可能承受各種沖擊,,包括強共模電壓,、高壓靜電、雷擊等[4],,因此通信接口的防護措施至關(guān)重要,。在本系統(tǒng)中,使用RSM3485模塊完成TTL電平到RS485電平的雙向轉(zhuǎn)換,。RSM3485模塊實現(xiàn)標(biāo)準(zhǔn)RS485接口,,具有ESD保護、短路或斷路失效保護功能,內(nèi)置120 kΩ上下拉電阻,,雙絞線輸出,,提供接觸情況下±4 kV和空氣放電情況下±8 kV的ESD放電功能,同時設(shè)計防雷電路,,預(yù)防在雷擊的情況下?lián)p壞通信接口[5],,該接口電路圖如圖1所示。
2.4 以太網(wǎng)接口方案設(shè)計
電力系統(tǒng)通信管理機都要求提供主備雙網(wǎng)口,,以保證在其中一個網(wǎng)口出現(xiàn)故障時,,另一個網(wǎng)口能夠繼續(xù)傳輸必要數(shù)據(jù)。5CSEMA4U23C6芯片默認(rèn)提供了兩個千兆以太網(wǎng)MAC,,但是這兩個MAC都是由HPS部分管理的,為了保證網(wǎng)口的可靠性,,即使在ARM部分系統(tǒng)宕機的情況下,,備用網(wǎng)口也能正常工作,設(shè)計時僅使用一個MAC層,,并由HPS驅(qū)動,,另一個網(wǎng)口使用NIOS II軟核控制集成的以太網(wǎng)通信芯片W5500實現(xiàn)。
W5500芯片是一個全硬件實現(xiàn)的單芯片TCP/IP協(xié)議芯片,,支持8個Socket端口,,使用非常方便可靠。使用NIOS II 控制W5500完成以太網(wǎng)傳輸,,即使HPS工作異常,,F(xiàn)PGA中的NIOS II CPU還可以繼續(xù)通過W5500進行數(shù)據(jù)的收發(fā),保證備用網(wǎng)口的穩(wěn)定運行,。
3 SoC FPGA應(yīng)用架構(gòu)設(shè)計
由于SoC FPGA作為一種創(chuàng)新的架構(gòu),,集成了FPGA和高性能HPS,因此在設(shè)計時,,可以充分利用HPS強大的數(shù)據(jù)處理能力,、FPGA側(cè)靈活的定制特性以及HPS和FPGA之間高速通信橋,將各種工作根據(jù)其特性合理分配給FPGA或者HPS,,通過兩者協(xié)作,,以實現(xiàn)最高的性能。
FPGA側(cè)主要實現(xiàn)UART通信接口的擴展和基于NIOS II 處理器的備用系統(tǒng),。HPS端主要實現(xiàn)大量數(shù)據(jù)處理和通信規(guī)約之間的轉(zhuǎn)換,。圖2為SoC FPGA上的功能劃分框圖。
3.1 FPGA邏輯設(shè)計
FPGA側(cè)邏輯部分實現(xiàn)16個支持MODBUS幀自動識別的UART通信控制單元,,如圖3所示,。每個單元由CRC校驗邏輯、串口數(shù)據(jù)收發(fā)緩存、核心控制狀態(tài)機和MODBUS幀識別邏輯組成,。各單元在核心控制狀態(tài)機的控制下自動完成MODBUS數(shù)據(jù)幀的收發(fā)和數(shù)據(jù)校驗碼的生成[6],,并經(jīng)由Avalon MM Slave接口與HPS傳輸MODBUS接收和需要發(fā)送的數(shù)據(jù)。
圖4為支持MODBUS幀自動識別的增強型UART通信控制單元接收數(shù)據(jù)時的工作狀態(tài)轉(zhuǎn)移圖,。整個狀態(tài)機由空閑狀態(tài)(IDLE),、接收數(shù)據(jù)狀態(tài)(GET_DATA)、接收超時狀態(tài)(TIMEOUT),、接收字節(jié)數(shù)據(jù)完成狀態(tài)(GET_BYTE),、幀傳輸完成狀態(tài)(FRAME_DONE)組成。
當(dāng)主機發(fā)出MODBUS請求幀后,,本模塊進入接收數(shù)據(jù)狀態(tài)(GET_DATA),,每接收到一個字節(jié),就跳轉(zhuǎn)進入接收字節(jié)完成狀態(tài)(GET_BYTE),,當(dāng)幀結(jié)束判定信號有效時,,表明一幀數(shù)據(jù)接收完成,此時進入幀接收完成狀態(tài),。通過比對接收到的數(shù)據(jù)幀中CRC數(shù)據(jù)字段和FPGA中CRC校驗單元對該幀產(chǎn)生的校驗數(shù)據(jù),,確定當(dāng)前幀是否正確。然后通過FPGA與HPS互聯(lián)橋向HPS發(fā)出中斷請求,,并報告當(dāng)前幀的校驗結(jié)果,,HPS側(cè)的Linux驅(qū)動程序則會根據(jù)校驗結(jié)果完成相應(yīng)的處理,如果校驗正確,,則讀取該幀數(shù)據(jù)并遞交給上層MODBUS協(xié)議層進行進一步解析處理,,如果該幀錯誤,則丟棄該幀,,并進入錯誤處理程序,。
3.2 Linux軟件設(shè)計
SoC FPGA芯片中的HPS運行Linux操作系統(tǒng),在Linux系統(tǒng)上運行通信管理機的應(yīng)用程序,。該應(yīng)用程序主要包括三大部分,,分別為MODBUS協(xié)議主站、IEC104協(xié)議從站,、MODBUS和IEC104協(xié)議間規(guī)約轉(zhuǎn)換程序,。其中,MODBUS協(xié)議主站運行開源的Libmodbus協(xié)議棧,,完成MODBUS指令和數(shù)據(jù)的收發(fā),。
Libmodbus協(xié)議棧是一個免費開源的MODBUS協(xié)議棧,支持MODBUS協(xié)議主站和從站功能,。由于本系統(tǒng)在FPGA側(cè)使用硬件邏輯電路已經(jīng)實現(xiàn)了MODBUS協(xié)議的部分功能,,如幀結(jié)束判定,、CRC校驗等。因此,,對Libmodbus協(xié)議棧進行了一定的刪減優(yōu)化,,去掉了底層數(shù)據(jù)幀接收和校驗的部分,僅使用其指令和數(shù)據(jù)解析部分,,這也是本系統(tǒng)的優(yōu)勢,,通過FPGA側(cè)硬件實現(xiàn)MODBUS協(xié)議底層內(nèi)容,降低了處理器的工作量,,使得處理器能夠輕松完成對多達16個基于MODBUS協(xié)議的端口的支持,。
為了方便實現(xiàn)對FPGA側(cè)的16端口個MODBUS加速器的控制,在Linux側(cè)單獨開設(shè)一個進程用于16端口MODBUS加速器的控制,,當(dāng)該任務(wù)被調(diào)度并得到執(zhí)行機會后,,開始依次查詢當(dāng)前端口的狀態(tài),然后根據(jù)得到的端口狀態(tài)執(zhí)行相應(yīng)的處理代碼,。該程序流程如圖5所示,。
空閑態(tài):當(dāng)查詢到一個端口的狀態(tài)為空閑時,表明此端口已經(jīng)正確地完成了一輪數(shù)據(jù)收發(fā),,在新的通信命令到來之前,該端口將處于空閑狀態(tài),,即不需要發(fā)送數(shù)據(jù),,也不需要接收數(shù)據(jù),MODBUS端口是處于空閑狀態(tài)的,。
接收成功:當(dāng)查詢到某個端口成功接收到返回的數(shù)據(jù)后,,則開始進行接收數(shù)據(jù)的處理工作,完成之后,,進入下一個端口的狀態(tài)查詢工作,。
接收超時:當(dāng)查詢到某個端口在設(shè)定的響應(yīng)時間內(nèi)無響應(yīng)時,則返回接收超時狀態(tài),。若檢測到超時狀態(tài),,系統(tǒng)開始進行超時處理工作。接收超時處理完成后,,進入下一個端口的狀態(tài)查詢工作,。
接收錯誤:當(dāng)查詢到某個端口接收數(shù)據(jù)出錯時,則進行接收錯誤處理工作,。當(dāng)接收錯誤處理完成后,,進入下一個端口的狀態(tài)查詢工作。該部分任務(wù)代碼框架如下所示:
for(i=0;i<=15;i++)
{
port_state=mdp_state_read(port_num),;//讀取指定端口狀態(tài)
switch(port_state)
{
case NO_STATE:break,;//無就緒端口
case RX_DONE://接收數(shù)據(jù)成功
…//接收到數(shù)據(jù)處理代碼模塊
break;
case RX_TIMEOUT://接收超時
…//接收超時端口處理代碼模塊
break;
case RX_ERROR://接收錯誤
…//接收錯誤端口處理代碼模塊
break;
default:
printf("default %d\n\n",port_num);//默認(rèn)為讀錯
誤處理,,將狀態(tài)寄存器設(shè)置為錯誤標(biāo)志
FPGA_WR16((port_num<<8 | 128), 1);
}//讀到第16個端口后,回到0號口讀取
if(port_num == 15) port_num = 0;
else port_num ++; //端口號自加1
}
usleep(30000); //釋放CPU權(quán)限
3.3 NIOS II備用系統(tǒng)軟件設(shè)計
通常狀態(tài)下NIOS II CPU處于待機狀態(tài),,若NIOS II CPU在設(shè)定的時間內(nèi)沒有接收到狀態(tài)消息,,則表明HPS系統(tǒng)側(cè)軟件系統(tǒng)崩潰,NIOS II CPU再通過和HPS互聯(lián)的狀態(tài)指示信號確認(rèn)當(dāng)前是操作系統(tǒng)宕機或應(yīng)用程序異常,。如果是應(yīng)用程序異常,,則觸發(fā)Linux側(cè)安全監(jiān)視軟件重啟應(yīng)用程序;如果是操作系統(tǒng)異常,,則啟動備用網(wǎng)口上報當(dāng)前系統(tǒng)故障信息到電站中心控制臺,,并通過硬件復(fù)位來重啟HPS。圖6為NIOS II 備用系統(tǒng)的程序流程圖,。
4 系統(tǒng)性能分析
表1為以16個RS485端口,,每個端口每500 ms完成一次對總線上設(shè)備的數(shù)據(jù)讀取,每次通信數(shù)據(jù)幀長度平均為64 B為例,,分析1 s內(nèi)本系統(tǒng)方案(簡稱SoC FPGA方案)和PowerPC+串口擴展芯片ST16C2550方案(簡稱PowerPC方案)在串口芯片數(shù)量,、CPU的CRC運算事務(wù)、CPU處理中斷次數(shù),、備用網(wǎng)口的獨立性等幾個方面的差異,。
5 結(jié)論
本文設(shè)計的基于Intel SoC FPGA的光伏電力通信管理機系統(tǒng)充分發(fā)揮了FPGA在處理多路并行數(shù)據(jù)通信方面的優(yōu)勢,極大地降低了傳統(tǒng)方案中嵌入式處理器在管理通信事務(wù)時的中斷開銷,,并提升了單個系統(tǒng)中支持MODBUS協(xié)議的RS485端口總量,,能有效簡化光伏電站的通信網(wǎng)絡(luò)布局布線。同時,,由于FPGA的可編程特性,,在不改變硬件電路的前提下,通過對FPGA重新編程的方式,,實現(xiàn)了系統(tǒng)的升級,,解決了光伏電力系統(tǒng)中多設(shè)備、大數(shù)據(jù)量的難題,,增加了系統(tǒng)的應(yīng)用范圍,。
參考文獻
[1] 李樹奇,李國營,,林俊杰.通信管理機在變電站的應(yīng)用[J].信息通信,,2011(6):188,190.
[2] 姚志璋,,張羽翹,,吳敏.光伏電站中的通信技術(shù)[J].農(nóng)村電氣化,2014(7):51-53.
[3] 何寶林,,李明剛,,劉波.MPC850在通信管理器的應(yīng)用[J].現(xiàn)代電子技術(shù),,2005,28(1):71-73.
[4] 路小俊,,吳在軍,,鄭建勇,等.基于ARM平臺及嵌入式實時操作系統(tǒng)的通信管理機[J].電力自動化設(shè)備,,2005,,25(5):46-49.
[5] 魯錦鋒,王蒙,,張婷,,等.光伏匯流箱中RS485通訊抗干擾方法分析[J].電子產(chǎn)品世界,2016,,23(11):57-58.
[6] 于正林,,張龍,黃勇.Modbus通信協(xié)議的FPGA實現(xiàn)[J].現(xiàn)代電子技術(shù),,2010,,33(11):203-207.