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