《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于SoC FPGA的光伏電力通信管理機系統(tǒng)
基于SoC FPGA的光伏電力通信管理機系統(tǒng)
2018年電子技術應用第2期
張 琳1,梅雪松2,陳 勇1
1.電子科技大學 微電子與固體電子學院,四川 成都610000;2.湖北追日電氣股份有限公司,湖北 襄陽441000
摘要: 介紹了一種基于SoC FPGA的光伏電力通信管理機系統(tǒng)的設計方法。該系統(tǒng)采用新型的集成有ARM硬核處理器的SoC FPGA作為主控芯片,將傳統(tǒng)通信管理機的運算和通信工作進行合理劃分,并由FPGA和ARM處理器協(xié)同實現(xiàn)。通過采用軟硬件相結合的設計方式,本系統(tǒng)能夠簡化電路設計,降低通信事務對CPU的中斷數(shù)量,增加支持MODBUS協(xié)議的RS485端口總量,并通過獨立的NIOS II備用系統(tǒng)保證了系統(tǒng)在災難情況下的可恢復性等,所以更加適合光伏電力系統(tǒng)中多設備、大數(shù)據(jù)量的應用。
中圖分類號: TN876.7
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.172636
中文引用格式: 張琳,梅雪松,陳勇. 基于SoC FPGA的光伏電力通信管理機系統(tǒng)[J].電子技術應用,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ā)電站利用大量的光伏電池板完成從光能到直流電能的轉換,再將直流電能使用逆變器轉換為50 Hz的交流電,輸送到電網(wǎng)中。整個光伏電站中電能控制及轉換設備需求量巨大。通信管理機作為電站中連接各個設備和電站中控臺的設備,通過控制平臺控制下行的Rtu設備,實現(xiàn)遙信、遙測、遙控等信息的采集,將消息反饋回調(diào)度中心,然后控制中心管理員通過對消息的處理分析,選擇將執(zhí)行的命令,達到遠動輸出調(diào)度命令的目標[1-2]

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

1 系統(tǒng)建模

    Intel Cyclone V SoC FPGA芯片5CSEMA4U23C6芯片是一款在單一芯片上集成了高性能的雙核ARM Cortex-A9 CPU和FPGA的SoC芯片,它是本系統(tǒng)的核心單元。

    在本系統(tǒng)中,SoC FPGA芯片上的FPGA部分主要負責UART接口的擴展以及MODBUS協(xié)議的加速。

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

    眾多電力設備的數(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 硬件電路方案設計

2.1 SoC FPGA 配置電路設計

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

2.2 SoC FPGA啟動電路設計

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

2.3 RS485接口電路設計

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

qrs3-t1.gif

2.4 以太網(wǎng)接口方案設計

    電力系統(tǒng)通信管理機都要求提供主備雙網(wǎng)口,以保證在其中一個網(wǎng)口出現(xiàn)故障時,另一個網(wǎng)口能夠繼續(xù)傳輸必要數(shù)據(jù)。5CSEMA4U23C6芯片默認提供了兩個千兆以太網(wǎng)MAC,但是這兩個MAC都是由HPS部分管理的,為了保證網(wǎng)口的可靠性,即使在ARM部分系統(tǒng)宕機的情況下,備用網(wǎng)口也能正常工作,設計時僅使用一個MAC層,并由HPS驅動,另一個網(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應用架構設計

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

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

qrs3-t2.gif

3.1 FPGA邏輯設計

    FPGA側邏輯部分實現(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ù)。

qrs3-t3.gif

    圖4為支持MODBUS幀自動識別的增強型UART通信控制單元接收數(shù)據(jù)時的工作狀態(tài)轉移圖。整個狀態(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)組成。

qrs3-t4.gif

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

3.2 Linux軟件設計

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

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

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

qrs3-t5.gif

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

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

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

    接收錯誤:當查詢到某個端口接收數(shù)據(jù)出錯時,則進行接收錯誤處理工作。當接收錯誤處理完成后,進入下一個端口的狀態(tài)查詢工作。該部分任務代碼框架如下所示:

    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);//默認為讀錯

誤處理,將狀態(tài)寄存器設置為錯誤標志

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

    }//讀到第16個端口后,回到0號口讀取

        if(port_num == 15)  port_num = 0;

        else  port_num ++; //端口號自加1

    }

    usleep(30000); //釋放CPU權限

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

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

qrs3-t6.gif

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

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

qrs3-b1.gif

5 結論

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

參考文獻

[1] 李樹奇,李國營,林俊杰.通信管理機在變電站的應用[J].信息通信,2011(6):188,190.

[2] 姚志璋,張羽翹,吳敏.光伏電站中的通信技術[J].農(nóng)村電氣化,2014(7):51-53.

[3] 何寶林,李明剛,劉波.MPC850在通信管理器的應用[J].現(xiàn)代電子技術,2005,28(1):71-73.

[4] 路小俊,吳在軍,鄭建勇,等.基于ARM平臺及嵌入式實時操作系統(tǒng)的通信管理機[J].電力自動化設備,2005,25(5):46-49.

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

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

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