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