文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.12.005
中文引用格式: 王長清,余丙濤,潘德強. 基于STM32的逐陽帆控制系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2015,41(12):25-27,31.
英文引用格式: Wang Changqing,Yu Bingtao,Pan Deqiang. A solar tracker system based on STM32[J].Application of Electronic Technique,2015,41(12):25-27,31.
0 引言
太陽能作為一種清潔、可持續(xù)發(fā)展的新能源,目前已經(jīng)被大量利用。由于在同一地理位置觀測到的太陽方位角時刻處于變化當中,導(dǎo)致固定支架式太陽能電池板發(fā)電量較低。目前,國內(nèi)部分光伏電站已經(jīng)大量采用可跟蹤式太陽能支架。光伏電站一般建于人煙稀少的荒漠地區(qū),占地面積大,系統(tǒng)維護較為困難,對跟蹤支架控制系統(tǒng)的可靠性和調(diào)試便利性提出了要求。文獻[1]提出的高精度太陽能跟蹤控制器解決了太陽跟蹤精度的問題,但是控制功能單一,實用性不強。文獻[2]提出的控制系統(tǒng)實用性較強,有大風(fēng)天氣的保護模式,但是系統(tǒng)維護升級復(fù)雜,同時因為沒有備份系統(tǒng)程序,一旦程序出現(xiàn)不可恢復(fù)性問題,系統(tǒng)就不能正常工作,可靠性不高。
針對以上方案存在系統(tǒng)維護升級困難、可靠性不高的問題,本文提出的基于STM32的太陽能跟蹤系統(tǒng),具有升級維護方便、系統(tǒng)可靠性高、實用性強的特點,目前已經(jīng)被應(yīng)用于內(nèi)蒙古自治區(qū)察右中旗庫倫光伏電站的跟蹤式光伏支架項目中。為了解決系統(tǒng)升級困難的問題,該系統(tǒng)創(chuàng)新性地將ZigBee技術(shù)和應(yīng)用編程技術(shù)結(jié)合應(yīng)用于工程之中,實現(xiàn)了無線升級的功能,將后期維護升級人員的工作量減小到最少。為了方便后臺管理,系統(tǒng)將信息通過ModBus協(xié)議上報。該系統(tǒng)有抗風(fēng)和抗雪兩種保護模式,提高了系統(tǒng)抵抗自熱災(zāi)害的性能。為了保證系統(tǒng)的可靠性,系統(tǒng)將控制芯片的片內(nèi)Flash分為BootLoader程序區(qū)、主程序區(qū)和備份程序區(qū),當主程序因不可知因素擾亂不能正常工作時,系統(tǒng)通過BootLoader程序跳轉(zhuǎn)至備份程序區(qū)繼續(xù)運行。同時,系統(tǒng)通過μC/OS II操作系統(tǒng)對系統(tǒng)任務(wù)進行調(diào)度管理,保證系統(tǒng)的實時性和穩(wěn)定性。經(jīng)實際應(yīng)用測試,該系統(tǒng)工作穩(wěn)定。
1 系統(tǒng)原理
系統(tǒng)采用ST公司的STM32F103ZET6為主控芯片,外部掛載GPS模塊、角度傳感器、EEROM、ZigBee模塊以及獨立鍵盤。系統(tǒng)通過GPS模塊獲取當前經(jīng)緯度值,通過讀取STM32內(nèi)部的時鐘模塊,計算出當前時間值,并通過經(jīng)緯度和時間值計算出太陽方位角。系統(tǒng)通過讀取角度傳感器獲取當前太陽能板的方位角度值,計算出太陽當前的方位角與太陽能板傾斜角的角度差,再根據(jù)該差值驅(qū)動電機將太陽能板轉(zhuǎn)動一定角度。由于光伏電站一般建于人煙較少的地區(qū),維護比較困難,所以對太陽追蹤系統(tǒng)的穩(wěn)定性要求較高。本系統(tǒng)通過對片內(nèi)Flash進行分區(qū),將片內(nèi)512 K Flash分為BootLoader程序區(qū)、主程序區(qū)和備份程序區(qū),保證系統(tǒng)在主程序卡死時能夠跳轉(zhuǎn)到備份程序區(qū)繼續(xù)運行,從而提高了系統(tǒng)的穩(wěn)定性。由于光伏電站占地面積太大,動輒多達1到2平方公里,動用人力來對區(qū)域內(nèi)所有設(shè)備進行升級維護工作量太大,本系統(tǒng)通過ZigBee技術(shù)實現(xiàn)了區(qū)域內(nèi)無線網(wǎng)絡(luò)覆蓋,使維護人員在一臺設(shè)備上即可對網(wǎng)內(nèi)任一設(shè)備進行無線升級,減少了工作量。為了方便光伏電站對逐陽帆系統(tǒng)進行管理,本系統(tǒng)采用ModBus通訊協(xié)議提供RS485接口,以便后臺對追蹤系統(tǒng)進行參數(shù)設(shè)置和信息查詢。本系統(tǒng)設(shè)有獨立鍵盤,用于手動控制。由于系統(tǒng)較為復(fù)雜,對系統(tǒng)的穩(wěn)定性和實時性都有一定的要求,所以本系統(tǒng)采用μC/OS II 操作系統(tǒng)對任務(wù)進行管理。
2 系統(tǒng)硬件設(shè)計
系統(tǒng)分為主板和從板,主板安裝在電控柜,用于控制三相交流電機。從板安裝于斜單軸主梁上,外部掛載角度傳感器,用于獲取角度信息。主板與從板通過RS485串行總線通信。主板的串口1用于獲取GPS信息,串口2用于與ZigBee模塊通信。串口3和串口4接RS485接口。串口5接RS232接口。電機驅(qū)動采用三相交流電機正反轉(zhuǎn)模塊。為了擴大ZigBee的通信范圍,系統(tǒng)通過CC2592進行功率放大。按鍵采用自鎖式按鍵開關(guān)。系統(tǒng)硬件結(jié)構(gòu)圖如圖1。
3 系統(tǒng)軟件設(shè)計
3.1 從板軟件設(shè)計
從板用于采集太陽能板當前方位角度值并通過RS485總線反饋給主板。從板的程序流程圖如圖2。
系統(tǒng)首先配置時鐘,本系統(tǒng)采用外部8 MHz晶振,經(jīng)芯片內(nèi)部倍頻后,系統(tǒng)時鐘為72 MHz。外設(shè)初始化包括IIC、定時器和串口。MPU6050的初始化包括解除休眠狀態(tài)、設(shè)置陀螺儀采樣率選擇量程等。主程序通過檢測接收完成標志位來判斷一幀數(shù)據(jù)是否接收完成,并檢測是否是關(guān)鍵字,若是關(guān)鍵字,則讀MPU6050,計算三軸角度并通過串口發(fā)送。
3.2 主板軟件設(shè)計
主板的程序分為BootLoader部分和APP部分。
BootLoader部分用于無線IAP和處理系統(tǒng)異常,代碼存放在片內(nèi)Flash 0x8000000到0x8002FFF 12 KB空間范圍內(nèi)。程序首先解鎖Flash,然后初始化串口和IIC。IIC掛載24C02,用于存放系統(tǒng)標識字。初始化完成后,讀取存在24C02中的標識字,并進行加1操作,再存入24C02。在主循環(huán)中讀取存放在24C02中的標識字,通過標識字的值來判斷系統(tǒng)當前的狀態(tài)。如果標識字為1,說明此刻在進行IAP應(yīng)用程序升級,此時系統(tǒng)通過Ymodem協(xié)議接收.bin文件并執(zhí)行新程序。如果標識字為2,說明App程序卡死,導(dǎo)致系統(tǒng)沒有及時復(fù)位,此時程序跳轉(zhuǎn)至備份程序區(qū)。當標識字大于2時,說明備份程序也卡死,此時程序不再跳轉(zhuǎn),點亮LED進行報警。BootLoader程序的地址偏移量為0,共12 K 地址空間;App程序的地址偏移量為0x3000,250 K 地址空間;備份程序的地址偏移量為0x41800,250 K地址空間。BootLoader程序流程圖如圖3。
App部分程序流程圖如圖4。系統(tǒng)通過μC/OS II 操作系統(tǒng)來對各個任務(wù)進行管理。由于App部分的代碼存放在Flash中的地址偏移量為0x8003000,所以在程序開始時,需要設(shè)置地址偏移量:SCB->VTOR=Flash_BASE | 0x3000。設(shè)置完后初始化各種外設(shè)并初始化系統(tǒng),創(chuàng)建開始任務(wù),最后開始對系統(tǒng)的各個任務(wù)進行處理。
啟動任務(wù)主要是用于創(chuàng)建二值信號量、郵箱、內(nèi)存區(qū)和系統(tǒng)的各種任務(wù)。在完成創(chuàng)建后,需要刪除啟動任務(wù)。
系統(tǒng)設(shè)置任務(wù)用于設(shè)置系統(tǒng)參數(shù),由于系統(tǒng)設(shè)置任務(wù)是關(guān)鍵任務(wù),所以其優(yōu)先級僅次于起始任務(wù)。系統(tǒng)設(shè)置任務(wù)通過串口1與上位機連接,設(shè)置的參數(shù)有時間、經(jīng)緯度、板長、板間距、限位角、避風(fēng)角、避雪角度。系統(tǒng)首先通過SETSYSTEM指令進入系統(tǒng)設(shè)置狀態(tài),并通過串口在上位機界面上打印提示信息。進入系統(tǒng)設(shè)置狀態(tài)以后,通過不同的指令進行不同參數(shù)的設(shè)置。在設(shè)置RTC時間時,需要將時間換算成秒數(shù),再將該值寫入RTC的秒寄存器,同時注意閏年換算。由于電站后臺需要對系統(tǒng)信息進行查詢,所以需要將系統(tǒng)參數(shù)寫入到保持寄存器中,方便后臺查詢管理。在系統(tǒng)設(shè)置的循環(huán)中加入系統(tǒng)延時,即將該任務(wù)掛起,提高系統(tǒng)的實時性。保證在進行系統(tǒng)設(shè)置時,系統(tǒng)的各個任務(wù)仍然可以調(diào)度。系統(tǒng)設(shè)置任務(wù)的程序流程圖如圖 5。
由于ModBus任務(wù)的實時性較高,可用信號量或者郵箱來觸發(fā),在實際測試中發(fā)現(xiàn)將ModBus處理函數(shù)放在定時器中斷服務(wù)程序中更好。本系統(tǒng)支持ModBus的命令有01,02,03,04,05,15,16。保持寄存器中包含的信息為從機地址、時間信息、經(jīng)緯度、限位角、工作模式等信息。
按鍵任務(wù)用于檢測按鍵事件,保證系統(tǒng)可以手動控制。任務(wù)輪詢模式按鍵是否有按鍵按下,如果按下,進行消抖,發(fā)送郵箱。在按鍵任務(wù)中需要注意的是系統(tǒng)必須是輪詢電平而不是上升沿或者下降沿。在模式按鍵按下之前,正轉(zhuǎn)和反轉(zhuǎn)按鍵按下,系統(tǒng)不做任何操作。
電機驅(qū)動任務(wù)用于獲取GPS、RTC、角度數(shù)據(jù)。并根據(jù)當前系統(tǒng)模式來驅(qū)動電機。電機驅(qū)動任務(wù)的程序流程圖如圖6。
經(jīng)計算,太陽方位角基本上為2分鐘轉(zhuǎn)0.5度,因此程序?qū)崟r性要求不高。當模式按鍵按下以后,按鍵任務(wù)會發(fā)送郵箱給電機驅(qū)動任務(wù)。當電機驅(qū)動任務(wù)接收到郵箱以后,會檢測正轉(zhuǎn)反轉(zhuǎn)以及模式按鍵是否按下。3個按鍵均為自鎖按鍵,只有在模式按鍵有效的情況下,正反轉(zhuǎn)按鍵才有效。如果在1秒之內(nèi)沒有收到郵箱,此時電機驅(qū)動任務(wù)結(jié)束掛起,取得CPU所有權(quán)。申請內(nèi)存存放GPS、角度、時間信息。讀GPS,如果當前GPS無效,讀RTC時間,并將時間值寫入時間寄存器。讀角度值,如果角度值無效,電機停止轉(zhuǎn)動,并點亮LED報警。讀模式寄存器的值,1為自動模式,2為避風(fēng)模式,3為避雪模式。如果是自動模式,需要根據(jù)時間、經(jīng)緯度、板子參數(shù)計算出太陽的方位角,驅(qū)動電機。
3.3 ZigBee程序設(shè)計
ZigBee部分主要是透傳作用。系統(tǒng)采用的ZigBee協(xié)議版本為ZStack 2.5.1a。協(xié)調(diào)器與上位機相連,在協(xié)調(diào)器收到串口數(shù)據(jù)以后,將收到的數(shù)據(jù)進行廣播。所有子節(jié)點收到協(xié)調(diào)器廣播的數(shù)據(jù)以后,將數(shù)據(jù)通過串口發(fā)送給控制板。如果當前的控制板處于BootLoader模式,則控制板將ZigBee模塊通過串口發(fā)送過來的數(shù)據(jù)寫入Flash。子節(jié)點將控制板通過串口發(fā)送過來的數(shù)據(jù)單播給協(xié)調(diào)器,協(xié)調(diào)器收到子節(jié)點單播的數(shù)據(jù)以后,通過串口發(fā)送給上位機。系統(tǒng)需要預(yù)編譯MT_TASK,在MT層處理串口數(shù)據(jù)。在MT層接收完一幀數(shù)據(jù)以后,將數(shù)據(jù)打包,發(fā)往應(yīng)用層。應(yīng)用層收到數(shù)據(jù)以后,將數(shù)據(jù)解包,然后調(diào)用AF_DataRequest()函數(shù)將串口字符串發(fā)送出去。當收到空中發(fā)過來的數(shù)據(jù)以后,應(yīng)用層會有AF_INCOMING_MSG_CMD事件產(chǎn)生,在該事件的處理函數(shù)中對數(shù)據(jù)進行解包,然后將有效數(shù)據(jù)通過串口發(fā)送出去。
4 結(jié)論
該系統(tǒng)的創(chuàng)新處為把ZigBee技術(shù)應(yīng)用于光伏電廠,通過ZigBee技術(shù)和應(yīng)用程序編程技術(shù)實現(xiàn)了系統(tǒng)程序無線更新,減輕了調(diào)試人員的工作量。通過對片內(nèi)Flash分區(qū),寫入備份程序,保證了系統(tǒng)的可靠性。同時系統(tǒng)的多種工作模式保證了系統(tǒng)的抗風(fēng)、抗雪性能。在實際現(xiàn)場的測試,該系統(tǒng)運行穩(wěn)定。目前,該系統(tǒng)已經(jīng)被應(yīng)用于上海摩昆新能源科技有限公司承擔的內(nèi)蒙庫倫光伏電站二期可跟蹤光伏支架的項目中。
參考文獻
[1] 王小鑫,胡紅利,王博.高精度太陽能跟蹤控制器[J].光電與控制,2012(12):80-83.
[2] 仲玉芳,王慧芬,葉建鋒.光伏發(fā)電系統(tǒng)太陽跟蹤裝置的研究[J].太陽能學(xué)報,2013(10):1762-1767.
[3] 萬蓉鳳,修春波,盧少磊.基于ZigBee技術(shù)的風(fēng)速測量系統(tǒng)的設(shè)計[J].中南大學(xué)學(xué)報(自然科學(xué)版),2013(S1):162-165.
[4] 丁力,宋志平,徐萌萌.基于STM32的嵌入式測控系統(tǒng)設(shè)計[J].中南大學(xué)學(xué)報(自然科學(xué)版),2013(S1):260-265.
[5] 王鈺博,黃凱,陳辰.嵌入式Flash讀取加速技術(shù)及實現(xiàn)[J].浙江大學(xué)學(xué)報(工學(xué)板),2014(09):1570-1579.
[6] 張猛,房俊龍.基于ZigBee和Internet的溫室群環(huán)境遠程監(jiān)控系統(tǒng)設(shè)計[J].農(nóng)業(yè)工程學(xué)報,2013(S1):171-176.
[7] 肖振鋒,袁蓉湘,鄧翔天.基于MSP430F169的遠程智能故障檢測器[J].電力自動化設(shè)備,2013(01):160-164.
[8] 李鵬,黃新波,趙隆.智能輸電線路狀態(tài)監(jiān)測代理的研究與設(shè)計[J].中國電機工程學(xué)報,2013(16):153-161.
[9] 李傳偉,常關(guān)羽,于振興.基于無線傳感網(wǎng)絡(luò)的石油鉆機設(shè)備遠程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].西北工業(yè)大學(xué)學(xué)報,2013(02).
[10] 王林軍,許立曉,邵磊.碟式太陽能自動跟蹤系統(tǒng)傳動機構(gòu)的誤差分析[J].農(nóng)業(yè)工程學(xué)報,2014(18):63-39.
[11] 劉琨,鄒琴梅,胡玉超.塔式太陽能熱發(fā)電自主式定日鏡系統(tǒng)設(shè)計[J].北京工業(yè)大學(xué)學(xué)報,2014(07):1073-1078.
[12] 邸斌,宋宏明.一種新型太陽能跟蹤系統(tǒng)的研究[J].哈爾濱理工大學(xué)學(xué)報,2012(02):67-71.