《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于STM32的逐陽帆控制系統(tǒng)設(shè)計(jì)
基于STM32的逐陽帆控制系統(tǒng)設(shè)計(jì)
2015年電子技術(shù)應(yīng)用第12期
王長清1,2,余丙濤1,3,潘德強(qiáng)3
1.河南師范大學(xué) 物理與電子工程學(xué)院,河南 新鄉(xiāng)453007; 2.河南師范大學(xué) 電磁波特征信息探測河南省高等學(xué)校重點(diǎn)學(xué)科開放實(shí)驗(yàn)室,河南 新鄉(xiāng)453007; 3.上海摩昆新能源科技有限公司,上海201100
摘要: 針對傳統(tǒng)太陽能跟蹤系統(tǒng)現(xiàn)場調(diào)試復(fù)雜、可靠性不夠高的問題,提出一種基于STM32的太陽能跟蹤系統(tǒng)設(shè)計(jì)。該系統(tǒng)為單軸跟蹤系統(tǒng),通過獲取太陽能板的地理位置和當(dāng)前時(shí)間信息用一定算法算出太陽的方位角,驅(qū)動電機(jī),實(shí)現(xiàn)對太陽的跟蹤;采用基于ZigBee技術(shù)的無線通訊系統(tǒng),具有群簇控制能力,簡化現(xiàn)場調(diào)試過程;通過ModBus協(xié)議實(shí)現(xiàn)控制系統(tǒng)信息上報(bào),便于后臺管理;提供多種工作模式,提高系統(tǒng)的抗風(fēng)、抗雪性能;通過在控制芯片片內(nèi)Flash寫入備份程序,保證系統(tǒng)主程序出現(xiàn)問題后,系統(tǒng)跳轉(zhuǎn)至備份程序繼續(xù)運(yùn)行,提高系統(tǒng)的可靠性。
關(guān)鍵詞: STM32 μCOSII ZigBee Modbus 逐陽帆
中圖分類號: TP212.6
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2015.12.005

中文引用格式: 王長清,余丙濤,潘德強(qiáng). 基于STM32的逐陽帆控制系統(tǒng)設(shè)計(jì)[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.
A solar tracker system based on STM32
Wang Changqing1,2,Yu Bingtao1,3,Pan Deqiang3
1.School of Physics and Electronic Engineering,Henan Normal University,Xinxiang 453007,China; 2.Henan Key Discipline Open Laboratory of Electromagnetic Wave Detecting,Henan Normal University,Xinxiang 453007,China; 3.Shang Hai Mokun New Energy Technology Co.,Ltd,Shanghai 201100,China
Abstract: In order to improve reliability of solar tracker control system and debug system facility, a solar tracker control system based on STM32 was designed. This is a single-shaft system,the system gets the solar panels’ location by GPS first, then an algorithm is used to calculate the azimuth of the sun, then driving motor and the solar panels will follow the sun. The system uses ZigBee to realize wireless IAP. The system sends all information to background by ModBus. There are multiple operation model to protect solar panels from winding or snowing weather. The system divides the flash of STM32 into BootLoader area, main program area and backup program area to improve the reliability of the system.
Key words : STM32;μC/OS II;ZigBee;ModBus;solar tracker

    

0 引言

    太陽能作為一種清潔、可持續(xù)發(fā)展的新能源,目前已經(jīng)被大量利用。由于在同一地理位置觀測到的太陽方位角時(shí)刻處于變化當(dāng)中,導(dǎo)致固定支架式太陽能電池板發(fā)電量較低。目前,國內(nèi)部分光伏電站已經(jīng)大量采用可跟蹤式太陽能支架。光伏電站一般建于人煙稀少的荒漠地區(qū),占地面積大,系統(tǒng)維護(hù)較為困難,對跟蹤支架控制系統(tǒng)的可靠性和調(diào)試便利性提出了要求。文獻(xiàn)[1]提出的高精度太陽能跟蹤控制器解決了太陽跟蹤精度的問題,但是控制功能單一,實(shí)用性不強(qiáng)。文獻(xiàn)[2]提出的控制系統(tǒng)實(shí)用性較強(qiáng),有大風(fēng)天氣的保護(hù)模式,但是系統(tǒng)維護(hù)升級復(fù)雜,同時(shí)因?yàn)闆]有備份系統(tǒng)程序,一旦程序出現(xiàn)不可恢復(fù)性問題,系統(tǒng)就不能正常工作,可靠性不高。

    針對以上方案存在系統(tǒng)維護(hù)升級困難、可靠性不高的問題,本文提出的基于STM32的太陽能跟蹤系統(tǒng),具有升級維護(hù)方便、系統(tǒng)可靠性高、實(shí)用性強(qiáng)的特點(diǎn),目前已經(jīng)被應(yīng)用于內(nèi)蒙古自治區(qū)察右中旗庫倫光伏電站的跟蹤式光伏支架項(xiàng)目中。為了解決系統(tǒng)升級困難的問題,該系統(tǒng)創(chuàng)新性地將ZigBee技術(shù)和應(yīng)用編程技術(shù)結(jié)合應(yīng)用于工程之中,實(shí)現(xiàn)了無線升級的功能,將后期維護(hù)升級人員的工作量減小到最少。為了方便后臺管理,系統(tǒng)將信息通過ModBus協(xié)議上報(bào)。該系統(tǒng)有抗風(fēng)和抗雪兩種保護(hù)模式,提高了系統(tǒng)抵抗自熱災(zāi)害的性能。為了保證系統(tǒng)的可靠性,系統(tǒng)將控制芯片的片內(nèi)Flash分為BootLoader程序區(qū)、主程序區(qū)和備份程序區(qū),當(dāng)主程序因不可知因素?cái)_亂不能正常工作時(shí),系統(tǒng)通過BootLoader程序跳轉(zhuǎn)至備份程序區(qū)繼續(xù)運(yùn)行。同時(shí),系統(tǒng)通過μC/OS II操作系統(tǒng)對系統(tǒng)任務(wù)進(jìn)行調(diào)度管理,保證系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性。經(jīng)實(shí)際應(yīng)用測試,該系統(tǒng)工作穩(wěn)定。

1 系統(tǒng)原理

    系統(tǒng)采用ST公司的STM32F103ZET6為主控芯片,外部掛載GPS模塊、角度傳感器、EEROM、ZigBee模塊以及獨(dú)立鍵盤。系統(tǒng)通過GPS模塊獲取當(dāng)前經(jīng)緯度值,通過讀取STM32內(nèi)部的時(shí)鐘模塊,計(jì)算出當(dāng)前時(shí)間值,并通過經(jīng)緯度和時(shí)間值計(jì)算出太陽方位角。系統(tǒng)通過讀取角度傳感器獲取當(dāng)前太陽能板的方位角度值,計(jì)算出太陽當(dāng)前的方位角與太陽能板傾斜角的角度差,再根據(jù)該差值驅(qū)動電機(jī)將太陽能板轉(zhuǎn)動一定角度。由于光伏電站一般建于人煙較少的地區(qū),維護(hù)比較困難,所以對太陽追蹤系統(tǒng)的穩(wěn)定性要求較高。本系統(tǒng)通過對片內(nèi)Flash進(jìn)行分區(qū),將片內(nèi)512 K Flash分為BootLoader程序區(qū)、主程序區(qū)和備份程序區(qū),保證系統(tǒng)在主程序卡死時(shí)能夠跳轉(zhuǎn)到備份程序區(qū)繼續(xù)運(yùn)行,從而提高了系統(tǒng)的穩(wěn)定性。由于光伏電站占地面積太大,動輒多達(dá)1到2平方公里,動用人力來對區(qū)域內(nèi)所有設(shè)備進(jìn)行升級維護(hù)工作量太大,本系統(tǒng)通過ZigBee技術(shù)實(shí)現(xiàn)了區(qū)域內(nèi)無線網(wǎng)絡(luò)覆蓋,使維護(hù)人員在一臺設(shè)備上即可對網(wǎng)內(nèi)任一設(shè)備進(jìn)行無線升級,減少了工作量。為了方便光伏電站對逐陽帆系統(tǒng)進(jìn)行管理,本系統(tǒng)采用ModBus通訊協(xié)議提供RS485接口,以便后臺對追蹤系統(tǒng)進(jìn)行參數(shù)設(shè)置和信息查詢。本系統(tǒng)設(shè)有獨(dú)立鍵盤,用于手動控制。由于系統(tǒng)較為復(fù)雜,對系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性都有一定的要求,所以本系統(tǒng)采用μC/OS II 操作系統(tǒng)對任務(wù)進(jìn)行管理。

2 系統(tǒng)硬件設(shè)計(jì)

    系統(tǒng)分為主板和從板,主板安裝在電控柜,用于控制三相交流電機(jī)。從板安裝于斜單軸主梁上,外部掛載角度傳感器,用于獲取角度信息。主板與從板通過RS485串行總線通信。主板的串口1用于獲取GPS信息,串口2用于與ZigBee模塊通信。串口3和串口4接RS485接口。串口5接RS232接口。電機(jī)驅(qū)動采用三相交流電機(jī)正反轉(zhuǎn)模塊。為了擴(kuò)大ZigBee的通信范圍,系統(tǒng)通過CC2592進(jìn)行功率放大。按鍵采用自鎖式按鍵開關(guān)。系統(tǒng)硬件結(jié)構(gòu)圖如圖1。

qrs3-t1.gif

3 系統(tǒng)軟件設(shè)計(jì)

3.1 從板軟件設(shè)計(jì)

    從板用于采集太陽能板當(dāng)前方位角度值并通過RS485總線反饋給主板。從板的程序流程圖如圖2。

qrs3-t2.gif

    系統(tǒng)首先配置時(shí)鐘,本系統(tǒng)采用外部8  MHz晶振,經(jīng)芯片內(nèi)部倍頻后,系統(tǒng)時(shí)鐘為72 MHz。外設(shè)初始化包括IIC、定時(shí)器和串口。MPU6050的初始化包括解除休眠狀態(tài)、設(shè)置陀螺儀采樣率選擇量程等。主程序通過檢測接收完成標(biāo)志位來判斷一幀數(shù)據(jù)是否接收完成,并檢測是否是關(guān)鍵字,若是關(guān)鍵字,則讀MPU6050,計(jì)算三軸角度并通過串口發(fā)送。

3.2 主板軟件設(shè)計(jì)

    主板的程序分為BootLoader部分和APP部分。

    BootLoader部分用于無線IAP和處理系統(tǒng)異常,代碼存放在片內(nèi)Flash 0x8000000到0x8002FFF 12 KB空間范圍內(nèi)。程序首先解鎖Flash,然后初始化串口和IIC。IIC掛載24C02,用于存放系統(tǒng)標(biāo)識字。初始化完成后,讀取存在24C02中的標(biāo)識字,并進(jìn)行加1操作,再存入24C02。在主循環(huán)中讀取存放在24C02中的標(biāo)識字,通過標(biāo)識字的值來判斷系統(tǒng)當(dāng)前的狀態(tài)。如果標(biāo)識字為1,說明此刻在進(jìn)行IAP應(yīng)用程序升級,此時(shí)系統(tǒng)通過Ymodem協(xié)議接收.bin文件并執(zhí)行新程序。如果標(biāo)識字為2,說明App程序卡死,導(dǎo)致系統(tǒng)沒有及時(shí)復(fù)位,此時(shí)程序跳轉(zhuǎn)至備份程序區(qū)。當(dāng)標(biāo)識字大于2時(shí),說明備份程序也卡死,此時(shí)程序不再跳轉(zhuǎn),點(diǎn)亮LED進(jìn)行報(bào)警。BootLoader程序的地址偏移量為0,共12 K 地址空間;App程序的地址偏移量為0x3000,250 K 地址空間;備份程序的地址偏移量為0x41800,250 K地址空間。BootLoader程序流程圖如圖3。

qrs3-t3.gif

    App部分程序流程圖如圖4。系統(tǒng)通過μC/OS II 操作系統(tǒng)來對各個(gè)任務(wù)進(jìn)行管理。由于App部分的代碼存放在Flash中的地址偏移量為0x8003000,所以在程序開始時(shí),需要設(shè)置地址偏移量:SCB->VTOR=Flash_BASE | 0x3000。設(shè)置完后初始化各種外設(shè)并初始化系統(tǒng),創(chuàng)建開始任務(wù),最后開始對系統(tǒng)的各個(gè)任務(wù)進(jìn)行處理。

qrs3-t4.gif

    啟動任務(wù)主要是用于創(chuàng)建二值信號量、郵箱、內(nèi)存區(qū)和系統(tǒng)的各種任務(wù)。在完成創(chuàng)建后,需要?jiǎng)h除啟動任務(wù)。

    系統(tǒng)設(shè)置任務(wù)用于設(shè)置系統(tǒng)參數(shù),由于系統(tǒng)設(shè)置任務(wù)是關(guān)鍵任務(wù),所以其優(yōu)先級僅次于起始任務(wù)。系統(tǒng)設(shè)置任務(wù)通過串口1與上位機(jī)連接,設(shè)置的參數(shù)有時(shí)間、經(jīng)緯度、板長、板間距、限位角、避風(fēng)角、避雪角度。系統(tǒng)首先通過SETSYSTEM指令進(jìn)入系統(tǒng)設(shè)置狀態(tài),并通過串口在上位機(jī)界面上打印提示信息。進(jìn)入系統(tǒng)設(shè)置狀態(tài)以后,通過不同的指令進(jìn)行不同參數(shù)的設(shè)置。在設(shè)置RTC時(shí)間時(shí),需要將時(shí)間換算成秒數(shù),再將該值寫入RTC的秒寄存器,同時(shí)注意閏年換算。由于電站后臺需要對系統(tǒng)信息進(jìn)行查詢,所以需要將系統(tǒng)參數(shù)寫入到保持寄存器中,方便后臺查詢管理。在系統(tǒng)設(shè)置的循環(huán)中加入系統(tǒng)延時(shí),即將該任務(wù)掛起,提高系統(tǒng)的實(shí)時(shí)性。保證在進(jìn)行系統(tǒng)設(shè)置時(shí),系統(tǒng)的各個(gè)任務(wù)仍然可以調(diào)度。系統(tǒng)設(shè)置任務(wù)的程序流程圖如圖 5。

qrs3-t5.gif

    由于ModBus任務(wù)的實(shí)時(shí)性較高,可用信號量或者郵箱來觸發(fā),在實(shí)際測試中發(fā)現(xiàn)將ModBus處理函數(shù)放在定時(shí)器中斷服務(wù)程序中更好。本系統(tǒng)支持ModBus的命令有01,02,03,04,05,15,16。保持寄存器中包含的信息為從機(jī)地址、時(shí)間信息、經(jīng)緯度、限位角、工作模式等信息。

    按鍵任務(wù)用于檢測按鍵事件,保證系統(tǒng)可以手動控制。任務(wù)輪詢模式按鍵是否有按鍵按下,如果按下,進(jìn)行消抖,發(fā)送郵箱。在按鍵任務(wù)中需要注意的是系統(tǒng)必須是輪詢電平而不是上升沿或者下降沿。在模式按鍵按下之前,正轉(zhuǎn)和反轉(zhuǎn)按鍵按下,系統(tǒng)不做任何操作。

    電機(jī)驅(qū)動任務(wù)用于獲取GPS、RTC、角度數(shù)據(jù)。并根據(jù)當(dāng)前系統(tǒng)模式來驅(qū)動電機(jī)。電機(jī)驅(qū)動任務(wù)的程序流程圖如圖6。

qrs3-t6.gif

    經(jīng)計(jì)算,太陽方位角基本上為2分鐘轉(zhuǎn)0.5度,因此程序?qū)?shí)時(shí)性要求不高。當(dāng)模式按鍵按下以后,按鍵任務(wù)會發(fā)送郵箱給電機(jī)驅(qū)動任務(wù)。當(dāng)電機(jī)驅(qū)動任務(wù)接收到郵箱以后,會檢測正轉(zhuǎn)反轉(zhuǎn)以及模式按鍵是否按下。3個(gè)按鍵均為自鎖按鍵,只有在模式按鍵有效的情況下,正反轉(zhuǎn)按鍵才有效。如果在1秒之內(nèi)沒有收到郵箱,此時(shí)電機(jī)驅(qū)動任務(wù)結(jié)束掛起,取得CPU所有權(quán)。申請內(nèi)存存放GPS、角度、時(shí)間信息。讀GPS,如果當(dāng)前GPS無效,讀RTC時(shí)間,并將時(shí)間值寫入時(shí)間寄存器。讀角度值,如果角度值無效,電機(jī)停止轉(zhuǎn)動,并點(diǎn)亮LED報(bào)警。讀模式寄存器的值,1為自動模式,2為避風(fēng)模式,3為避雪模式。如果是自動模式,需要根據(jù)時(shí)間、經(jīng)緯度、板子參數(shù)計(jì)算出太陽的方位角,驅(qū)動電機(jī)。

3.3 ZigBee程序設(shè)計(jì)

    ZigBee部分主要是透傳作用。系統(tǒng)采用的ZigBee協(xié)議版本為ZStack 2.5.1a。協(xié)調(diào)器與上位機(jī)相連,在協(xié)調(diào)器收到串口數(shù)據(jù)以后,將收到的數(shù)據(jù)進(jìn)行廣播。所有子節(jié)點(diǎn)收到協(xié)調(diào)器廣播的數(shù)據(jù)以后,將數(shù)據(jù)通過串口發(fā)送給控制板。如果當(dāng)前的控制板處于BootLoader模式,則控制板將ZigBee模塊通過串口發(fā)送過來的數(shù)據(jù)寫入Flash。子節(jié)點(diǎn)將控制板通過串口發(fā)送過來的數(shù)據(jù)單播給協(xié)調(diào)器,協(xié)調(diào)器收到子節(jié)點(diǎn)單播的數(shù)據(jù)以后,通過串口發(fā)送給上位機(jī)。系統(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ā)送出去。當(dāng)收到空中發(fā)過來的數(shù)據(jù)以后,應(yīng)用層會有AF_INCOMING_MSG_CMD事件產(chǎn)生,在該事件的處理函數(shù)中對數(shù)據(jù)進(jìn)行解包,然后將有效數(shù)據(jù)通過串口發(fā)送出去。

4 結(jié)論

    該系統(tǒng)的創(chuàng)新處為把ZigBee技術(shù)應(yīng)用于光伏電廠,通過ZigBee技術(shù)和應(yīng)用程序編程技術(shù)實(shí)現(xiàn)了系統(tǒng)程序無線更新,減輕了調(diào)試人員的工作量。通過對片內(nèi)Flash分區(qū),寫入備份程序,保證了系統(tǒng)的可靠性。同時(shí)系統(tǒng)的多種工作模式保證了系統(tǒng)的抗風(fēng)、抗雪性能。在實(shí)際現(xiàn)場的測試,該系統(tǒng)運(yùn)行穩(wěn)定。目前,該系統(tǒng)已經(jīng)被應(yīng)用于上海摩昆新能源科技有限公司承擔(dān)的內(nèi)蒙庫倫光伏電站二期可跟蹤光伏支架的項(xiàng)目中。

參考文獻(xiàn)

[1] 王小鑫,胡紅利,王博.高精度太陽能跟蹤控制器[J].光電與控制,2012(12):80-83.

[2] 仲玉芳,王慧芬,葉建鋒.光伏發(fā)電系統(tǒng)太陽跟蹤裝置的研究[J].太陽能學(xué)報(bào),2013(10):1762-1767.

[3] 萬蓉鳳,修春波,盧少磊.基于ZigBee技術(shù)的風(fēng)速測量系統(tǒng)的設(shè)計(jì)[J].中南大學(xué)學(xué)報(bào)(自然科學(xué)版),2013(S1):162-165.

[4] 丁力,宋志平,徐萌萌.基于STM32的嵌入式測控系統(tǒng)設(shè)計(jì)[J].中南大學(xué)學(xué)報(bào)(自然科學(xué)版),2013(S1):260-265.

[5] 王鈺博,黃凱,陳辰.嵌入式Flash讀取加速技術(shù)及實(shí)現(xiàn)[J].浙江大學(xué)學(xué)報(bào)(工學(xué)板),2014(09):1570-1579.

[6] 張猛,房俊龍.基于ZigBee和Internet的溫室群環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].農(nóng)業(yè)工程學(xué)報(bào),2013(S1):171-176.

[7] 肖振鋒,袁蓉湘,鄧翔天.基于MSP430F169的遠(yuǎn)程智能故障檢測器[J].電力自動化設(shè)備,2013(01):160-164.

[8] 李鵬,黃新波,趙隆.智能輸電線路狀態(tài)監(jiān)測代理的研究與設(shè)計(jì)[J].中國電機(jī)工程學(xué)報(bào),2013(16):153-161.

[9] 李傳偉,常關(guān)羽,于振興.基于無線傳感網(wǎng)絡(luò)的石油鉆機(jī)設(shè)備遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].西北工業(yè)大學(xué)學(xué)報(bào),2013(02).

[10] 王林軍,許立曉,邵磊.碟式太陽能自動跟蹤系統(tǒng)傳動機(jī)構(gòu)的誤差分析[J].農(nóng)業(yè)工程學(xué)報(bào),2014(18):63-39.

[11] 劉琨,鄒琴梅,胡玉超.塔式太陽能熱發(fā)電自主式定日鏡系統(tǒng)設(shè)計(jì)[J].北京工業(yè)大學(xué)學(xué)報(bào),2014(07):1073-1078.

[12] 邸斌,宋宏明.一種新型太陽能跟蹤系統(tǒng)的研究[J].哈爾濱理工大學(xué)學(xué)報(bào),2012(02):67-71.

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