《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于SoC FPGA的光伏電力通信管理機(jī)系統(tǒng)
基于SoC FPGA的光伏電力通信管理機(jī)系統(tǒng)
2018年電子技術(shù)應(yīng)用第2期
張 琳1,梅雪松2,陳 勇1
1.電子科技大學(xué) 微電子與固體電子學(xué)院,四川 成都610000;2.湖北追日電氣股份有限公司,湖北 襄陽441000
摘要: 介紹了一種基于SoC FPGA的光伏電力通信管理機(jī)系統(tǒng)的設(shè)計(jì)方法。該系統(tǒng)采用新型的集成有ARM硬核處理器的SoC FPGA作為主控芯片,將傳統(tǒng)通信管理機(jī)的運(yùn)算和通信工作進(jìn)行合理劃分,并由FPGA和ARM處理器協(xié)同實(shí)現(xiàn)。通過采用軟硬件相結(jié)合的設(shè)計(jì)方式,本系統(tǒng)能夠簡化電路設(shè)計(jì),降低通信事務(wù)對CPU的中斷數(shù)量,增加支持MODBUS協(xié)議的RS485端口總量,并通過獨(dú)立的NIOS II備用系統(tǒng)保證了系統(tǒng)在災(zāi)難情況下的可恢復(fù)性等,所以更加適合光伏電力系統(tǒng)中多設(shè)備、大數(shù)據(jù)量的應(yīng)用。
中圖分類號(hào): TN876.7
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.172636
中文引用格式: 張琳,梅雪松,陳勇. 基于SoC FPGA的光伏電力通信管理機(jī)系統(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.

Photovoltaic power communication management system based on SoC FPGA
Zhang Lin1,Mei Xuesong2,Chen Yong1
1.School of Microelectronics and Solid-State Electronics,University of Electronics Science and Technology of China, Chengdu 610000,China; 2.Surpass Sun Electric Co.,Ltd.,Xiangyang 441000,China
Abstract: A design method of photovoltaic power communication management system based on SoC FPGA is introduced in this paper. The system uses the new-type SoC FPGA integrated with ARM hardcore process as its main control chip, which divides the work of operation and communication of traditional communication management unit reasonably and is implemented by FPGA and ARM processor. By adopting the design of combining hardware with software, this system can simplify the circuit design, reduce the number of CPU interrupts for communication transactions, increase the total number of RS485 ports which support MODBUS protocol,and the system is recoverable in a disaster situation through the independent NIOS II backup system, etc, so it is more suitable for the application of multiple devices and massive data in photovoltaic power system.
Key words : communication management unit;SoC FPGA;photovoltaic power systems;collaborative design

0 引言

    光伏發(fā)電站利用大量的光伏電池板完成從光能到直流電能的轉(zhuǎn)換,再將直流電能使用逆變器轉(zhuǎn)換為50 Hz的交流電,輸送到電網(wǎng)中。整個(gè)光伏電站中電能控制及轉(zhuǎn)換設(shè)備需求量巨大。通信管理機(jī)作為電站中連接各個(gè)設(shè)備和電站中控臺(tái)的設(shè)備,通過控制平臺(tái)控制下行的Rtu設(shè)備,實(shí)現(xiàn)遙信、遙測、遙控等信息的采集,將消息反饋回調(diào)度中心,然后控制中心管理員通過對消息的處理分析,選擇將執(zhí)行的命令,達(dá)到遠(yuǎn)動(dòng)輸出調(diào)度命令的目標(biāo)[1-2]

    目前廣泛采用的通信管理機(jī)實(shí)現(xiàn)方案主要有3種:PowerPC處理器+串口擴(kuò)展芯片架構(gòu)、ARM處理器架構(gòu)、ARM處理器+FPGA架構(gòu)。其中:(1)PowerPC處理器+串口擴(kuò)展芯片架構(gòu)使用帶通信協(xié)處理器的PowerPC處理器作為系統(tǒng)的核心,使用串口通信擴(kuò)展芯片為PowerPC擴(kuò)展出最多16個(gè)串口[3]。所有數(shù)據(jù)處理和運(yùn)算全部由PowerPC處理器完成,在所有串口全部使用的情況下,整個(gè)系統(tǒng)運(yùn)行較為緩慢,數(shù)據(jù)的實(shí)時(shí)性難以保證。(2)使用單獨(dú)ARM處理器作為核心實(shí)現(xiàn)的通信管理機(jī)結(jié)構(gòu)簡單,但是能夠支持的串口數(shù)量受到ARM處理器本身集成的串口數(shù)量限制,一般都不超過6個(gè)[4],無法滿足光伏電站中海量設(shè)備的需求。(3)ARM處理器+FPGA架構(gòu)利用FPGA完成串口擴(kuò)展,基于ARM處理器完成數(shù)據(jù)的處理和網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn),它本質(zhì)上和基于PowerPC+串口擴(kuò)展芯片的方案一致。該種方案增加了系統(tǒng)的復(fù)雜度,但單性能上提升并不明顯。以上3種方案都存在的問題是系統(tǒng)有且僅有一個(gè)核心單元,一旦系統(tǒng)宕機(jī),就不得不重啟系統(tǒng),在系統(tǒng)未恢復(fù)的情況下,整個(gè)系統(tǒng)與電站中心控制臺(tái)處于完全斷開的狀態(tài),無法接收中心控制臺(tái)的控制指令。

    本文基于Intel全新的SoC FPGA芯片,將原本采用分立的FPGA和ARM處理器實(shí)現(xiàn)的系統(tǒng)使用單一的SoC FPGA芯片實(shí)現(xiàn),并在FPGA上搭建了冗余監(jiān)控系統(tǒng)。在提高系統(tǒng)性能的同時(shí),保證了系統(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接口的擴(kuò)展以及MODBUS協(xié)議的加速。

    在電力系統(tǒng)中,幾乎所有設(shè)備都支持標(biāo)準(zhǔn)的RS485接口,并使用MODBUS協(xié)議與其他設(shè)備進(jìn)行通信。光伏電站中,因?yàn)樵O(shè)備多、數(shù)據(jù)量大,通信管理機(jī)的一個(gè)RS485端口在同一時(shí)刻只能和一臺(tái)設(shè)備通信,因此導(dǎo)致數(shù)據(jù)傳輸速度出現(xiàn)瓶頸。為了解決這個(gè)問題,往往采用多個(gè)MODBUS網(wǎng)絡(luò)端口來實(shí)現(xiàn)眾多設(shè)備的管理[2]。

    眾多電力設(shè)備的數(shù)據(jù)在被通信管理機(jī)采集之后最終需要通過以太網(wǎng)接口與電站的中控后臺(tái)進(jìn)行數(shù)據(jù)交互,該數(shù)據(jù)交互主要通過IEC104協(xié)議實(shí)現(xiàn),而IEC104協(xié)議的實(shí)現(xiàn)是通過SoC FPGA中的硬件處理系統(tǒng)(Hard Process System,HPS)運(yùn)行成熟的Linux操作系統(tǒng)來完成的。

2 硬件電路方案設(shè)計(jì)

2.1 SoC FPGA 配置電路設(shè)計(jì)

    為了使系統(tǒng)支持遠(yuǎn)程在線升級(jí),本系統(tǒng)設(shè)置SoC FPGA的FPGA部分接收HPS部分的配置數(shù)據(jù)。HPS部分可以接收串口或者網(wǎng)口傳輸?shù)腇PGA配置文件。運(yùn)行時(shí)SoC FPGA的HPS部分先啟動(dòng)并運(yùn)行Linux操作系統(tǒng),Linux操作系統(tǒng)啟動(dòng)完畢之后進(jìn)行FPGA部分的配置。如果需要遠(yuǎn)程更新FPGA的配置數(shù)據(jù),只需要通過網(wǎng)口將新的FPGA配置內(nèi)容傳輸?shù)讲僮飨到y(tǒng)所管理的磁盤上替換原來的配置文件,則系統(tǒng)下一次啟動(dòng)時(shí)就可以使用新的配置文件來配置FPGA。

2.2 SoC FPGA啟動(dòng)電路設(shè)計(jì)

    SoC FPGA中的HPS部分運(yùn)行Linux操作系統(tǒng),HPS支持從SD卡、QSPI Flash、NAND Flash存儲(chǔ)器中啟動(dòng)。NAND Flash和QSPI Flash存儲(chǔ)器一般都采用焊接的方式安裝在電路板上,而SD卡則是可拆卸并單獨(dú)在PC上讀寫的。在工業(yè)現(xiàn)場,如果設(shè)備系統(tǒng)一旦損壞,需要重新燒錄系統(tǒng)時(shí),QSPI Flash和NAND Flash由于焊接在PCB板上,只能使用PC在線燒寫,而SD卡則可以采用預(yù)先燒錄好系統(tǒng)的SD卡進(jìn)行更換,因此節(jié)省了現(xiàn)場維修的工作量。

2.3 RS485接口電路設(shè)計(jì)

    通信管理機(jī)作為一個(gè)工業(yè)設(shè)備,其通信接口可能承受各種沖擊,包括強(qiáng)共模電壓、高壓靜電、雷擊等[4],因此通信接口的防護(hù)措施至關(guān)重要。在本系統(tǒng)中,使用RSM3485模塊完成TTL電平到RS485電平的雙向轉(zhuǎn)換。RSM3485模塊實(shí)現(xiàn)標(biāo)準(zhǔn)RS485接口,具有ESD保護(hù)、短路或斷路失效保護(hù)功能,內(nèi)置120 kΩ上下拉電阻,雙絞線輸出,提供接觸情況下±4 kV和空氣放電情況下±8 kV的ESD放電功能,同時(shí)設(shè)計(jì)防雷電路,預(yù)防在雷擊的情況下?lián)p壞通信接口[5],該接口電路圖如圖1所示。

qrs3-t1.gif

2.4 以太網(wǎng)接口方案設(shè)計(jì)

    電力系統(tǒng)通信管理機(jī)都要求提供主備雙網(wǎng)口,以保證在其中一個(gè)網(wǎng)口出現(xiàn)故障時(shí),另一個(gè)網(wǎng)口能夠繼續(xù)傳輸必要數(shù)據(jù)。5CSEMA4U23C6芯片默認(rèn)提供了兩個(gè)千兆以太網(wǎng)MAC,但是這兩個(gè)MAC都是由HPS部分管理的,為了保證網(wǎng)口的可靠性,即使在ARM部分系統(tǒng)宕機(jī)的情況下,備用網(wǎng)口也能正常工作,設(shè)計(jì)時(shí)僅使用一個(gè)MAC層,并由HPS驅(qū)動(dòng),另一個(gè)網(wǎng)口使用NIOS II軟核控制集成的以太網(wǎng)通信芯片W5500實(shí)現(xiàn)。

    W5500芯片是一個(gè)全硬件實(shí)現(xiàn)的單芯片TCP/IP協(xié)議芯片,支持8個(gè)Socket端口,使用非常方便可靠。使用NIOS II 控制W5500完成以太網(wǎng)傳輸,即使HPS工作異常,F(xiàn)PGA中的NIOS II CPU還可以繼續(xù)通過W5500進(jìn)行數(shù)據(jù)的收發(fā),保證備用網(wǎng)口的穩(wěn)定運(yùn)行。

3 SoC FPGA應(yīng)用架構(gòu)設(shè)計(jì)

    由于SoC FPGA作為一種創(chuàng)新的架構(gòu),集成了FPGA和高性能HPS,因此在設(shè)計(jì)時(shí),可以充分利用HPS強(qiáng)大的數(shù)據(jù)處理能力、FPGA側(cè)靈活的定制特性以及HPS和FPGA之間高速通信橋,將各種工作根據(jù)其特性合理分配給FPGA或者HPS,通過兩者協(xié)作,以實(shí)現(xiàn)最高的性能。

    FPGA側(cè)主要實(shí)現(xiàn)UART通信接口的擴(kuò)展和基于NIOS II 處理器的備用系統(tǒng)。HPS端主要實(shí)現(xiàn)大量數(shù)據(jù)處理和通信規(guī)約之間的轉(zhuǎn)換。圖2為SoC FPGA上的功能劃分框圖。

qrs3-t2.gif

3.1 FPGA邏輯設(shè)計(jì)

    FPGA側(cè)邏輯部分實(shí)現(xiàn)16個(gè)支持MODBUS幀自動(dòng)識(shí)別的UART通信控制單元,如圖3所示。每個(gè)單元由CRC校驗(yàn)邏輯、串口數(shù)據(jù)收發(fā)緩存、核心控制狀態(tài)機(jī)和MODBUS幀識(shí)別邏輯組成。各單元在核心控制狀態(tài)機(jī)的控制下自動(dòng)完成MODBUS數(shù)據(jù)幀的收發(fā)和數(shù)據(jù)校驗(yàn)碼的生成[6],并經(jīng)由Avalon MM Slave接口與HPS傳輸MODBUS接收和需要發(fā)送的數(shù)據(jù)。

qrs3-t3.gif

    圖4為支持MODBUS幀自動(dòng)識(shí)別的增強(qiáng)型UART通信控制單元接收數(shù)據(jù)時(shí)的工作狀態(tài)轉(zhuǎn)移圖。整個(gè)狀態(tài)機(jī)由空閑狀態(tài)(IDLE)、接收數(shù)據(jù)狀態(tài)(GET_DATA)、接收超時(shí)狀態(tài)(TIMEOUT)、接收字節(jié)數(shù)據(jù)完成狀態(tài)(GET_BYTE)、幀傳輸完成狀態(tài)(FRAME_DONE)組成。

qrs3-t4.gif

    當(dāng)主機(jī)發(fā)出MODBUS請求幀后,本模塊進(jìn)入接收數(shù)據(jù)狀態(tài)(GET_DATA),每接收到一個(gè)字節(jié),就跳轉(zhuǎn)進(jìn)入接收字節(jié)完成狀態(tài)(GET_BYTE),當(dāng)幀結(jié)束判定信號(hào)有效時(shí),表明一幀數(shù)據(jù)接收完成,此時(shí)進(jìn)入幀接收完成狀態(tài)。通過比對接收到的數(shù)據(jù)幀中CRC數(shù)據(jù)字段和FPGA中CRC校驗(yàn)單元對該幀產(chǎn)生的校驗(yàn)數(shù)據(jù),確定當(dāng)前幀是否正確。然后通過FPGA與HPS互聯(lián)橋向HPS發(fā)出中斷請求,并報(bào)告當(dāng)前幀的校驗(yàn)結(jié)果,HPS側(cè)的Linux驅(qū)動(dòng)程序則會(huì)根據(jù)校驗(yàn)結(jié)果完成相應(yīng)的處理,如果校驗(yàn)正確,則讀取該幀數(shù)據(jù)并遞交給上層MODBUS協(xié)議層進(jìn)行進(jìn)一步解析處理,如果該幀錯(cuò)誤,則丟棄該幀,并進(jìn)入錯(cuò)誤處理程序。

3.2 Linux軟件設(shè)計(jì)

    SoC FPGA芯片中的HPS運(yùn)行Linux操作系統(tǒng),在Linux系統(tǒng)上運(yùn)行通信管理機(jī)的應(yīng)用程序。該應(yīng)用程序主要包括三大部分,分別為MODBUS協(xié)議主站、IEC104協(xié)議從站、MODBUS和IEC104協(xié)議間規(guī)約轉(zhuǎn)換程序。其中,MODBUS協(xié)議主站運(yùn)行開源的Libmodbus協(xié)議棧,完成MODBUS指令和數(shù)據(jù)的收發(fā)。

    Libmodbus協(xié)議棧是一個(gè)免費(fèi)開源的MODBUS協(xié)議棧,支持MODBUS協(xié)議主站和從站功能。由于本系統(tǒng)在FPGA側(cè)使用硬件邏輯電路已經(jīng)實(shí)現(xiàn)了MODBUS協(xié)議的部分功能,如幀結(jié)束判定、CRC校驗(yàn)等。因此,對Libmodbus協(xié)議棧進(jìn)行了一定的刪減優(yōu)化,去掉了底層數(shù)據(jù)幀接收和校驗(yàn)的部分,僅使用其指令和數(shù)據(jù)解析部分,這也是本系統(tǒng)的優(yōu)勢,通過FPGA側(cè)硬件實(shí)現(xiàn)MODBUS協(xié)議底層內(nèi)容,降低了處理器的工作量,使得處理器能夠輕松完成對多達(dá)16個(gè)基于MODBUS協(xié)議的端口的支持。

    為了方便實(shí)現(xiàn)對FPGA側(cè)的16端口個(gè)MODBUS加速器的控制,在Linux側(cè)單獨(dú)開設(shè)一個(gè)進(jìn)程用于16端口MODBUS加速器的控制,當(dāng)該任務(wù)被調(diào)度并得到執(zhí)行機(jī)會(huì)后,開始依次查詢當(dāng)前端口的狀態(tài),然后根據(jù)得到的端口狀態(tài)執(zhí)行相應(yīng)的處理代碼。該程序流程如圖5所示。

qrs3-t5.gif

    空閑態(tài):當(dāng)查詢到一個(gè)端口的狀態(tài)為空閑時(shí),表明此端口已經(jīng)正確地完成了一輪數(shù)據(jù)收發(fā),在新的通信命令到來之前,該端口將處于空閑狀態(tài),即不需要發(fā)送數(shù)據(jù),也不需要接收數(shù)據(jù),MODBUS端口是處于空閑狀態(tài)的。

    接收成功:當(dāng)查詢到某個(gè)端口成功接收到返回的數(shù)據(jù)后,則開始進(jìn)行接收數(shù)據(jù)的處理工作,完成之后,進(jìn)入下一個(gè)端口的狀態(tài)查詢工作。

    接收超時(shí):當(dāng)查詢到某個(gè)端口在設(shè)定的響應(yīng)時(shí)間內(nèi)無響應(yīng)時(shí),則返回接收超時(shí)狀態(tài)。若檢測到超時(shí)狀態(tài),系統(tǒng)開始進(jìn)行超時(shí)處理工作。接收超時(shí)處理完成后,進(jìn)入下一個(gè)端口的狀態(tài)查詢工作。

    接收錯(cuò)誤:當(dāng)查詢到某個(gè)端口接收數(shù)據(jù)出錯(cuò)時(shí),則進(jìn)行接收錯(cuò)誤處理工作。當(dāng)接收錯(cuò)誤處理完成后,進(jìn)入下一個(gè)端口的狀態(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://接收超時(shí)

           …//接收超時(shí)端口處理代碼模塊

           break;

           case RX_ERROR://接收錯(cuò)誤

           …//接收錯(cuò)誤端口處理代碼模塊

           break;

           default:

           printf("default %d\n\n",port_num);//默認(rèn)為讀錯(cuò)

誤處理,將狀態(tài)寄存器設(shè)置為錯(cuò)誤標(biāo)志

           FPGA_WR16((port_num<<8 | 128), 1);

    }//讀到第16個(gè)端口后,回到0號(hào)口讀取

        if(port_num == 15)  port_num = 0;

        else  port_num ++; //端口號(hào)自加1

    }

    usleep(30000); //釋放CPU權(quán)限

3.3 NIOS II備用系統(tǒng)軟件設(shè)計(jì)

    通常狀態(tài)下NIOS II CPU處于待機(jī)狀態(tài),若NIOS II CPU在設(shè)定的時(shí)間內(nèi)沒有接收到狀態(tài)消息,則表明HPS系統(tǒng)側(cè)軟件系統(tǒng)崩潰,NIOS II CPU再通過和HPS互聯(lián)的狀態(tài)指示信號(hào)確認(rèn)當(dāng)前是操作系統(tǒng)宕機(jī)或應(yīng)用程序異常。如果是應(yīng)用程序異常,則觸發(fā)Linux側(cè)安全監(jiān)視軟件重啟應(yīng)用程序;如果是操作系統(tǒng)異常,則啟動(dòng)備用網(wǎng)口上報(bào)當(dāng)前系統(tǒng)故障信息到電站中心控制臺(tái),并通過硬件復(fù)位來重啟HPS。圖6為NIOS II 備用系統(tǒng)的程序流程圖。

qrs3-t6.gif

4 系統(tǒng)性能分析

    表1為以16個(gè)RS485端口,每個(gè)端口每500 ms完成一次對總線上設(shè)備的數(shù)據(jù)讀取,每次通信數(shù)據(jù)幀長度平均為64 B為例,分析1 s內(nèi)本系統(tǒng)方案(簡稱SoC FPGA方案)和PowerPC+串口擴(kuò)展芯片ST16C2550方案(簡稱PowerPC方案)在串口芯片數(shù)量、CPU的CRC運(yùn)算事務(wù)、CPU處理中斷次數(shù)、備用網(wǎng)口的獨(dú)立性等幾個(gè)方面的差異。

qrs3-b1.gif

5 結(jié)論

    本文設(shè)計(jì)的基于Intel SoC FPGA的光伏電力通信管理機(jī)系統(tǒng)充分發(fā)揮了FPGA在處理多路并行數(shù)據(jù)通信方面的優(yōu)勢,極大地降低了傳統(tǒng)方案中嵌入式處理器在管理通信事務(wù)時(shí)的中斷開銷,并提升了單個(gè)系統(tǒng)中支持MODBUS協(xié)議的RS485端口總量,能有效簡化光伏電站的通信網(wǎng)絡(luò)布局布線。同時(shí),由于FPGA的可編程特性,在不改變硬件電路的前提下,通過對FPGA重新編程的方式,實(shí)現(xiàn)了系統(tǒng)的升級(jí),解決了光伏電力系統(tǒng)中多設(shè)備、大數(shù)據(jù)量的難題,增加了系統(tǒng)的應(yīng)用范圍。

參考文獻(xiàn)

[1] 李樹奇,李國營,林俊杰.通信管理機(jī)在變電站的應(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ái)及嵌入式實(shí)時(shí)操作系統(tǒng)的通信管理機(jī)[J].電力自動(dòng)化設(shè)備,2005,25(5):46-49.

[5] 魯錦鋒,王蒙,張婷,等.光伏匯流箱中RS485通訊抗干擾方法分析[J].電子產(chǎn)品世界,2016,23(11):57-58.

[6] 于正林,張龍,黃勇.Modbus通信協(xié)議的FPGA實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2010,33(11):203-207.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。