, , ,
(湖北大學 計算機與信息工程學院,武漢 430062)
目前,太陽能并網發電的應用對象主要分為3個方向:集中型光伏電站、商用型并網發電和家庭戶用型并網發電。光伏數據對于供應運營商和用戶都十分重要,如發電量、發電效率和設備運行情況等都是供應商和用戶重點關注的信息,如何高效的收集這些數據就顯得非常重要[1]。
在光伏監控系統中,PC機直接通過RS485總線或RS485總線伺服器將采集到的數據直接或通過網絡傳輸至數據中心,傳輸正確率無法保證,傳輸方式單一,丟包可能性大,鋪設通信線纜成本高,數據無法存儲,無法本地顯示,出現故障無法報警,無法兼容多種主流受控逆變器設備等[2]。同時,商用和戶用型發電設備具有布局分散、網絡連接受限等特點,這就亟需依托嵌入式的平臺的具有數據顯示、存儲、轉發功能的軟件系統來實現基礎數據的安全管理和傳輸,而分布式光伏數據采集器能夠滿足商用和戶用型的需求[3]。
分布式光伏數據采集系統主要包括分布式光伏數據采集器和后臺信息中心兩部分,其總體架構如圖1所示。
分布式光伏數據采集器由嵌入式處理器、RS485通信模塊、GPRS通信模塊、LCD液晶、SD卡模塊組成[4]。其中,嵌入式處理器采用基于ARM Coretx-M3內核的芯片,運行符合工業規范的嵌入式實時操作系統uCOS II,負責控制數據采集、通信和顯示等任務;RS485通信模塊負責采集光伏發電設備組中逆變器等設備的運行參數;GPRS通信模塊負責定時將采集的數據通過網絡傳輸至后臺信息中心,供PC端應用程序訪問,為管理者提供遠程的光伏發電數據可視化;LCD在本地顯示設備運行數據,方便普通用戶查看光伏發電信息,也利于維修人員檢修設備;SD卡用于自動備份光伏數據采集器獲取的信息,在網絡條件不穩定的情況下,可延期發送數據,避免數據丟失。
后臺信息中心由服務器、PC Web端和移動APP終端三部分組成。分布式光伏數據采集器通過GPRS通過TCP/IP協議將數據傳輸到服務器,再由PC Web端和移動APP終端對光伏數據進行多樣展示[5]。按照數據采集系統的總體結構設計要求,設計的光伏數據采集器的硬件結構如圖2所示。本文將從著重描述分布式光伏數據采集器的硬件和軟件的設計與實現。

圖1 分布式光伏數據采集系統架構

圖2 分布式光伏數據采集器硬件框圖
硬件設計主要包括基于ARM Cortex-M3[6]內核的控制器最小系統、RS485通信模塊、GPRS通信模塊、LCD顯示、SD卡外部存儲和電源模塊。
分布式光伏數據采集器控制器選型綜合處理器速度、存儲容量和外設接口等情況,采用低成本、穩定性高的STM32F207VET6芯片。該芯片為32位處理器,主頻可達120MHz,能夠運行uCOS II實時操作系統;擁有192KB SRAM、512KB FLASH、32位定時器、2個DMA控制器、6個串口、1個RTC(具備日歷功能)、1個SDIO接口、1個以太網MAC控制器和1個FSMC接口等硬件資源,配置滿足光伏數據采集器的硬件電路設計需求[7]。
LCD顯示選用晶聯訊電子的JLX256128G-257型模塊,驅動IC為ST75256功能較強、穩定性好,采用3.3V供電,整個LCD帶背光情況下功耗不大于100 mW。LCD可顯示圖片、漢字、英文、數字和符號,如最大顯示256×128點陣單色圖片或顯示16個×8行=64個的16×16點陣的漢字,單頁面可顯示信息量滿足本次需求。LCD不帶字庫,降低LCD成本,將設備所需文字取模后,存放在數據采集器本地,實現UI的自定義顯示,提升界面的美觀性。LCD接口連接在處理器自帶的FSMC總線上,提高了LCD的刷屏速度,降低了LCD驅動開發難度,采用8080時序并口方式進行數據傳輸。LCD背光通過處理器的GIPO進行控制,用戶觸發液晶顯示時點亮背光,超時未操作液晶時背光將熄滅。液晶顯示電路如圖3所示。

圖3 液晶顯示電路
RS485通信模塊采用MAX3485芯片進行電平轉換,RS485接口電路如圖4所示。R33為終端匹配電阻,減弱反射信號,保證通信穩定。R32和R34為偏置電阻,以保證RS485總線空閑時維持高電平[8]。RS485具有抗干擾能力、傳輸距離遠、數據傳輸速度快和支持大量節點等特性,在工業領域得到廣泛應用。設計的兩路RS485接口均增加隔離環節,即完成電平轉換又實現信號隔離,減少了干擾信號經由信號線傳入傳出,提高系統的抗干擾能力。RS485總線在10m時數據傳輸速率最高可達10Mbps,總線最長可傳輸距離為1200m,此時速度可達100kbps。一般RS485最多支持32個節點,特定的RS485芯片節點最大可達400個,本次設備連接8個節點,即支持對8臺光伏逆變器進行數據采集。

圖4 RS485接口電路
與后臺中心通信采用GPRS模塊進行數據通信,預留了以太網和WIFI擴展接口。GPRS是在現有GSM系統上發展出來的一種新的數據承載業務,支持TCP/IP協議,可以與分組數據網(Internet等)直接互通。GPRS無線傳輸系統的應用范圍非常廣泛,幾乎可以涵蓋所有的中低業務和低速率的數據傳輸,尤其適合突發的小流量數據傳輸業務。本硬件平臺的GPRS無線通信模塊為SIM900A,內嵌了TCP/IP協議,采用工業級的GPRS模塊,適用于單片機數據采集傳輸系統沒有TCP/IP協議棧但采用串口通信的情況。SIM900A采用4V供電,功耗較低,待機模式電流低于18mA,支持900/1800 MHz頻段,滿足分布式光伏數據采集器所處網絡環境。采用SIM900A設計的最小系統如圖5所示,模塊射頻發射時電流峰值可達2A,設計時VBAT引腳應并接大電容,且VBAT在PCB走線時盡量短、寬來減少走線阻抗,提高模塊的穩定性。

圖5 GPRS模塊最小系統
SD卡接口采用STM32F207VET6自帶的SDIO接口[9]進行連接,其連接電路如圖6所示。SD卡通過SDIO接口進行數據讀寫,通過時鐘信號線CLK(SDIO_CLK引腳)控制時鐘周期,命令信號線CMD(SDIO_CMD引腳)傳輸SD卡主機發送的命令,數據線DATA(SDIO_D0~ SDIO_D3引腳)傳輸SD讀寫的數據。SD卡采用容量為8GB的micro SD,減少設備體積。

圖6 SD卡接口電路
電源模塊電路如圖7所示,輸入5V/2A直流電,通過ASM1117芯片轉換為3.3V,為整個設備(除GPRS模塊外)供電。5V通過MIC29302芯片轉換為4V,為GPRS模塊供電。整個電路具有完善的濾波電路,供電穩定可靠。在PCB設計時應考慮電源布局和布線,GPRS模塊的供電走線應適當加寬、布線短。

圖7 電源模塊電路
數據采集器選用小功率的LED指示燈來實現電源供應、設備運行狀態和網絡情況的指示,便于觀察、分析整個設備運行情況。數據采集器還預留了四位撥碼開關,用于后期設備功能的擴展。4個按鍵用于切換LCD顯示界面、本地配置數據采集器運行參數,如服務器IP地址和端口號、數據采集波特率、數據發送時間間隔和屏幕休眠時間參數。
由于分布式光伏數據采集器通常用在網絡環境有限的環境,數據在網絡不穩定的情況下不能及時傳輸,結合SD卡數據備份功能,通過GPRS網絡可在網絡良好且無工作任務的情況下,將未發送的數據繼續傳輸,數據傳輸成功率要求達到100%。整個采集器實現了本地數據可視化、運行狀態可視化、參數可配置和低功耗運行等功能,通過GPRS網絡實現了數據和狀態的遠程可視化,極大地方便了對分布式光伏逆變器的監控,提升了用戶使用效果。
光伏數據采集器軟件系統基于C語言開發,在集成開發環境Keil MDK下編譯、調試。設計時采用由總到分式策略進行模塊化開發,以便于調試、維護、升級。開發的軟件保存在用戶層,通過調用CMSIS層的設備外設函數和uCOS II API來管理硬件以及實現相應的功能,其架構如圖8所示。

圖8 光伏數據采集器軟件架構
光伏數據采集器軟件系統主要包括5個部分,分別是在線設備查詢、數據獲取、數據存儲、數據傳輸和人機交互界面。該軟件系統通過查詢和識別在線的受控設備,并定時的從這些設備上獲取光伏電參量數據和環境數據。同時,通過GPRS模塊或以太網與服務器建立的TCP/IP連接將數據傳輸到服務器上,相關數據也被保存到SD卡中。人機交互界面則用以實現實時數據顯示與系統參數的顯示和修改。光伏數據采集器軟件結構如圖9所示。

圖9 數據采集器軟件功能劃分
1)設備查詢流:光伏數據采集器通過485總線與受控逆變器連接,其通信接口為串行通信口采用標準的RS485,信息傳輸方式為異步方式,起始位1位,數據位8位,停止位1位,無校驗位。傳輸時先傳高字(節),后傳低字(節),數據傳輸波特率默認使用9600bps。檢查在線設備之前先設置所查詢的初始設備地址,根據地址生成測試幀。發送測試幀,根據Modbus協議,如果該設備號地址在線則會響應包含地址的數據幀。通過解析發送和響應的地址相同則可判斷該設備在線,依次增加地址查詢設備即可獲取所有在線設備,并將這些地址保存在在線設備地址表中,同時記錄總的在線設備數。查詢在線設備流程如圖10所示。

圖10 設備查詢流程圖
2)中斷信號量:數據采集器設備的數據獲取存儲和傳輸有明顯的周期規律,在工作時間段(7:00~18:00)數據采集器會每個15分鐘一場采集數據,存儲數據,發送數據。采集、存儲和發送數據的時間依次間隔1分鐘。該過程的實現是鬧鐘A每分鐘產生一次中斷,以15次中斷為一個周期。每個中斷周期中,當RTC時間為工作時間段且中斷累積到13次時及向獲取數據任務發送獲取數據的信號量;當RTC時間為工作時間段且中斷累積到14次時及向存儲數據任務發送存儲數據的信號量;當RTC時間為工作時間段且中斷累積到13次時及向傳輸數據任務發送傳輸數據的信號量。具體流程如圖11所示。

圖11 中斷信號流程圖
3)數據獲取:通信的物理層是數據采集器與受控設備通過串口轉接的RS485連接,數據采集器串口與轉換芯片的收發直接連接,數據采集器另有I/O控制芯片收發方向。軟件中先初始化串口和方向控制口,再通過應用層的Modbus協議獲取受控設備的數據。
其中物理層通信流程如下:
(1)通過將USART_CR1寄存器中的UE位置1來使能USART;
(2)在程序中配置USART_CR1中的M位來定義字長;
(3)在程序中設置USART_CR2中的停止位數;
(4)若執行多緩沖區通信,在USART_CR3中使能DMA,并根據多緩沖區通信方式來進行DMA寄存器的設置;
(5)使用USART_BRR寄存器來配置合適的波特率;
(6)將USART_CR1中的TE設置為高電平,使得在第一次傳輸數據時首先發出一個空閑幀;
(7)往USART_DR寄存器傳入需要傳輸的采集數據;
(8)當傳輸的數據全部寫入USART_DR寄存器后,若TC位變為高電平,則表明最后一個幀的傳送已完成。
數據采集器與逆變器通信的總線采用RS485,應用層協議采用工業界通用的Modbus標準協議。Modbus標準包含兩個通信規程中采用的Modbus應用層協議以及服務規范:串行鏈路上的Modbus和TCP/IP上的Modbus[10]。本文的數據采集器應用層通信協議采用的是Modbus串行鏈路上基于485-A的通信協議。Modbus的工業通用幀結構如圖12所示,一般通過應用數據單元(ADU)來表示。ADU主要由簡單數據單元(PDU)和其他的附加域構成,其中PDU與基礎通信層無關。對于串行鏈路通信方式,RS485 ADU最大可為256字節,一般服務器地址域占1字節,CRC校驗碼占2字節,則PDU最大為253字節。Modbus通過一個“big-Endian”表示地址和數據項,傳輸多個數據時將先發送最高有效位。

圖12 Modbus工業通用幀結構
數據采集器在收到RTC鬧鐘A中斷每15分發送給該模塊的信號量后,按在線設備地址編號表內的地址依次生成發送數據幀獲取光伏數據并更新到數據緩沖區。如果獲取數據失敗,則只更新對應設備地址號對應緩沖區的設備狀態,數據不更新。獲取數據流程如圖13所示。

圖13 獲取數據流程圖
4)保存數據:在數據獲取后,收到RTC鬧鐘A中斷每15分發送給該模塊的信號量,則根據獲取到的設備狀態將緩沖區數據存儲到SD卡中,同時保持存儲時間。保存數據流程如圖14所示。

圖14 保存數據流程圖
其中SD卡的初始化[12]過程比較復雜,具體過程分析如下:
(1)對常見SD卡的錯誤類型進行報錯處理,確保SDIO接口初始化成功;
(2)初始化SDIO的外設時鐘,進行工作模式設置;
(3)上電后發送CMD0命令,SD卡進入空閑狀態;
(4)發送CMD8命令,若SD由響應且CRC檢驗一致,則SD卡為支持2.0版本的SD卡,無響應則為1.x版本的SD卡或者MMC卡;
(5)通過命令CMD55+ACMD41,檢測SD卡上電情況,若響應ACMD41命令后,OCR寄存器第30位CCS為1,則SD卡為2.0版本的SDHC卡,反之為SDSC卡;
(6)發送CMD2命令,判斷SD卡接入情況,以及獲取CID寄存器內容,如SD卡生產商ID、名稱和生產信息等;
(7)發送CMD3命令,將SD卡的相對地址傳輸給主機(數據采集器),主機發送CMD9命令來獲得SD卡的具體數據,如容量和扇區大小等信息;
根據上面步驟,SD卡初始化基本完成。通過發送CMD7命令,使得SD卡進入傳輸模式,可開始對SD卡的讀/寫操作。
5)數據傳輸:在通信流程中,數據獲取并收到RTC鬧鐘A中斷每15分發送給該模塊的信號量后,則將緩沖區數據通過TCP連接發送到遠處服務器上。具體流程如圖15所示。

圖15 發送數據流程圖
其中,GPRS狀態機是保證軟件在多個GPRS運行狀態之間正常轉換,使GPRS正常完成數據發送或正常關閉,以保證下一次數據正常發送。其狀態轉換如圖16所示。

圖16 GPRS狀態轉換圖
整個流程的運行步驟如下:
(1)查詢是否需要SIM 密碼檢測;
(2)查詢GPRS模塊信號質量;
(3)網絡注冊;
(4)附著GPRS業務;
(5)設置接入點CMNET;
(6)啟動網絡連接功能;
(7)查詢本機IP地址;
(8)建立連接,配置遠程服務器IP地址和端口號和TCP連接方式;
(9)發送數據;
(10)發送結束幀標識符;
(11)關閉TCP連接;
(12)關閉移動場景;
(13)關機斷電。
6)人機交互界面:人機界面用于數據顯示,系統狀態顯示,系統參數顯示和系統設置,本人機交互的主要設計思想是查找表狀態機設計,窗體結構體設計,控件設計和回調函數[13]。
其中,查找表狀態機是用以通過查找表搜索界面跳轉的邏輯關系;窗體結構體這包含了所有界面的窗體信息,如窗體ID,窗體控件指針,回調函數的指針;控件設計則是根據控件的不同功能設計窗體中的背景控件,列表控件和輸入焦點;回調函數則是根據不同的按鍵和整體的輸入所執行的函數,有些與窗體相關的函數具有通用性可以重復調用,如窗體初始化函數、窗體切換函數、焦點切換函數和列表內容切換函數等。
對應不同的窗體,其大部分的結構和回調函數都是相同的,他們的區別這主要在于背景信息,焦點信息,列表控件和初始化過程中的數據綁定函數及按鍵更新回調中的數據更新函數的不同。其中窗體結構體設計如圖17所示。

圖17 窗體結構體設計
窗體UI設計主要功能函數有窗體初始化函數、窗體退出函數、窗體異常函數、按鍵響應函數和窗體定時刷新函數。窗體初始化函數負責初始化每個界面顯示的內容,窗體退出函數負責切換到當前窗體退出后的窗體,窗體異常函數負責跳轉到異常發生時所設置的跳轉窗體,按鍵響應函數負責將窗體切換到按鍵切換的窗體,窗體定時刷新函數用于定時更新界面上動態顯示的內容,如設備運行時間和日累計光伏發電量等。
窗體通過唯一的ID進行索引來切換。窗體上顯示的內容通過x、y坐標來放置,利用按鍵來選擇切換項,反顯用來指示選中項。
窗體的運行是依賴于信號量的觸發,信號量主要是通過本地4個按鍵輸入來產生,其運行流程如圖18所示。

圖18 人機界面流程圖
根據光伏數據采集器功能需要,其界面結構圖如圖19所示。用戶可通過本地按鍵查詢所關心的日累計發電量,工程師可在本地查看數據采集器故障代碼,也可通過本地按鍵配置設備運行參數。

圖19 人機交互界面結構圖
通過硬件設計的電路圖繪制PCB文件進行打樣,采集元器件進行實物制作。在完成硬件實物基本版本制作后,根據軟件設計的功能進行硬件模塊測試。經過多次測試硬件的模塊功能,確認硬件設計無誤后,開始軟件和硬件的整體聯合測試。
光伏數據采集器的LCD顯示了連接逆變器的數量和輪詢方式查詢逆變器運行數據。本地可以通過4個按鍵進行參數設置和界面切換。
光伏數據采集器的維護只需定期檢查網絡指示燈是否正常,發送數據時間是否有誤。如果網絡異常則重新檢查連接網絡,若無網絡接入條件且需要獲取數據,則將設備中SD卡取出,通過SD卡中的ID.txt獲取該設備保存的備份數據。
數據傳輸成功率通過數據庫中日傳輸數據量、該數據生成時間戳和傳輸時間戳來判斷,設置傳輸時間(7:00~18:00)期間,每隔一小時整點傳輸一次數據,7:00開始傳輸數據,日傳輸數據條目應為12條,且數據生成時間戳與傳輸時間范圍內的整點時間大致接近。若數據傳輸時間戳不在7:00~18:00期間,則該條數據網絡不穩定情況下,從SD卡備份數據導出對應時間段的數據。
在連續一周的GPRS網絡發送數據測試過程中,數據發送成功率達到了99%以上,表明光伏數據采集器的數據傳輸比較穩定。結合本地SD卡數據備份,在沒有發電數據傳輸任務期間(18:00至次日7:00),對傳輸失敗的數據進行二次發送,數據發送成功率可達100%。
本文設計與實現了分布式光伏數據采集器,解決了戶用型光伏領域數據監控的難題。通過分布式光伏數據采集器,可實現對戶用型光伏發電數據的遠程監控,在網絡受限的情況下仍可通過SD卡進行數據備份,避免運行數據丟失。
通過分布式光伏數據采集器傳輸的數據,可以監測光伏電站生產運行情況,統計分析電站歷史運行數據,有利于實現電站日常工作和流程的規范化、標準化、數字化管理。分布式光伏數據采集器為光伏電站的正常運行和生產管理提供技術保障,在光伏發電領域將有著很好的應用前景。