基于微機(jī)保護(hù)的電力系統(tǒng)繼電保護(hù)的設(shè)計(jì)-畢業(yè)論文_第1頁
基于微機(jī)保護(hù)的電力系統(tǒng)繼電保護(hù)的設(shè)計(jì)-畢業(yè)論文_第2頁
基于微機(jī)保護(hù)的電力系統(tǒng)繼電保護(hù)的設(shè)計(jì)-畢業(yè)論文_第3頁
基于微機(jī)保護(hù)的電力系統(tǒng)繼電保護(hù)的設(shè)計(jì)-畢業(yè)論文_第4頁
基于微機(jī)保護(hù)的電力系統(tǒng)繼電保護(hù)的設(shè)計(jì)-畢業(yè)論文_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

青島農(nóng)業(yè)大學(xué)畢業(yè)論文(設(shè)計(jì))題目:基于微機(jī)保護(hù)的電力系統(tǒng)繼電保護(hù)的設(shè)計(jì)畢業(yè)論文(設(shè)計(jì))誠信聲明本人聲明:所呈交的畢業(yè)論文(設(shè)計(jì))是在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果,論文中引用他人的文獻(xiàn)、數(shù)據(jù)、圖表、資料均已作明確標(biāo)注,論文中的結(jié)論和成果為本人獨(dú)立完成,真實(shí)可靠,不包含他人成果及已獲得青島農(nóng)業(yè)大學(xué)或其他教育機(jī)構(gòu)的學(xué)位或證書使用過的材料。與我一同工作的同志對(duì)本研究所做的任何貢獻(xiàn)均已在論文中作了明確的說明并表示了謝意。論文(設(shè)計(jì))作者簽名:日期:年月日畢業(yè)論文(設(shè)計(jì))版權(quán)使用授權(quán)書本畢業(yè)論文(設(shè)計(jì))作者同意學(xué)校保留并向國家有關(guān)部門或機(jī)構(gòu)送交論文(設(shè)計(jì))的復(fù)印件和電子版,允許論文(設(shè)計(jì))被查閱和借閱。本人授權(quán)青島農(nóng)業(yè)大學(xué)可以將本畢業(yè)論文(設(shè)計(jì))全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本畢業(yè)論文(設(shè)計(jì))。本人離校后發(fā)表或使用該畢業(yè)論文(設(shè)計(jì))或與該論文(設(shè)計(jì))直接相關(guān)的學(xué)術(shù)論文或成果時(shí),單位署名為青島農(nóng)業(yè)大學(xué)。論文(設(shè)計(jì))作者簽名:日期:年月日指導(dǎo)教師簽名:日期:年月日目錄TOC\o"1-3"\h\u摘要 基于微機(jī)保護(hù)的電力系統(tǒng)繼電保護(hù)的設(shè)計(jì)摘要本設(shè)計(jì)主要完成了一套基于微機(jī)保護(hù)的新型繼電保護(hù)整體設(shè)計(jì)方案,在分析了我國微機(jī)保護(hù)發(fā)展的歷史和現(xiàn)狀并結(jié)合了工作效率和器件性價(jià)比后,確定了C#+STM32的系統(tǒng)設(shè)計(jì)解決方案。本設(shè)計(jì)以意法半導(dǎo)體公司生產(chǎn)的STM32F407芯片制作成測控板實(shí)現(xiàn)保護(hù)邏輯與信息傳遞功能,該測控板主要負(fù)責(zé)電流測量變換及電壓形成、A/D采樣、繼電保護(hù)邏輯判斷和輸出、有效值計(jì)算、TFT屏幕顯示測量值、與上位機(jī)通信。上位機(jī)采用Microsoft公司開發(fā)的設(shè)計(jì)語言C#和開發(fā)環(huán)境VisualStudio2013設(shè)計(jì)上位機(jī)監(jiān)視控制界面,主要實(shí)現(xiàn)采樣數(shù)據(jù)的接收與采樣波形顯示功能和遠(yuǎn)程控制斷路器跳合閘功能。本文詳細(xì)闡述了各部分功能的設(shè)計(jì)思路和設(shè)計(jì)方法,稍作改進(jìn)便可用于實(shí)際電力系統(tǒng)保護(hù)當(dāng)中,也可另用作繼電保護(hù)實(shí)驗(yàn)教學(xué)裝置。關(guān)鍵詞:微機(jī)保護(hù);電流保護(hù);C#;STM32

TheDesignofPowerSystemRelayProtectionBasedonMicrocomputerProtectionAbstractThroughtheanalysisofthehistoryandcurrentsituationofthedevelopmentofmicrocomputerprotectioninourcountry,andconsiderthefactorssuchasworkefficiency,developmentefficiencyanddeviceperformance.UltimatelydeterminetheuseofC#+STM32technologyofanewrelayprotectionschemebasedonmicrocomputerprotection.STM32F407chipproducedbytheStSemiconductorCorporationismadeintothemeasurementandcontrolboardtorealizethefunctionofprotectionlogicandinformationtransfer.Furthermore,themeasurementandcontrolboardismainlyresponsibleforthecurrentmeasurementtransformationandvoltageformation,A/Dsampling,relayprotectionlogicjudgmentandoutput,RMSvalueofthecalculation,TFTscreenreal-timedisplayofmeasuredvaluesandcommunicationwiththeuppercomputer.Specifically,usingthedesignlanguageofC#developedbytheMicrosoftcompanyanddevelopmentenvironmentofvisualstudio2013bothdesigntheuppercomputermonitoringandcontrolinterface,themainachievementofsamplingdatareceivingandsamplingwaveformdisplayfunctionandremotecontrolcircuitbreakerjumpclosingfunction.Inthispaper,thedesignideaandmethodofeachpartofthefunctionaredescribedindetail.Thesimulatedrelayprotectiondevicewithaslightimprovementcanbeusedintheactualpowersystemprotection,andcanbeusedasarelayprotectionexperimentteachingdeviceforteaching.Keywords:MicrocomputerProtection;CurrentProtection;C#;STM32青島農(nóng)業(yè)大學(xué)機(jī)電工程學(xué)院本科畢業(yè)設(shè)計(jì)(論文)1緒論1.1選題背景及研究意義為了保障電力系統(tǒng)安全運(yùn)行,需要實(shí)時(shí)地監(jiān)視其運(yùn)行狀況,及時(shí)發(fā)現(xiàn)電力系統(tǒng)的不正常狀態(tài)及故障狀態(tài)。而繼電保護(hù)裝置能檢測電力系統(tǒng)的故障及不正常運(yùn)行狀態(tài),快速地通過繼電保護(hù)裝置進(jìn)行故障的切除并通知運(yùn)行人員。因此,繼電保護(hù)是保障電力系統(tǒng)供電優(yōu)質(zhì)運(yùn)行穩(wěn)定極其重要的手段[1]。當(dāng)前在實(shí)際應(yīng)用中,絕大部分低壓配電網(wǎng)或者農(nóng)村電網(wǎng)并沒有故障點(diǎn)定位系統(tǒng),所以電力系統(tǒng)發(fā)生故障如接地故障這種難以發(fā)現(xiàn)的故障通常是斷路器自動(dòng)跳閘后人工去排查,由巡線員去現(xiàn)場一根線一根線的尋找故障點(diǎn)在哪兒,然后采取措施解決問題。這樣一來,不僅耗費(fèi)了大量的人力,還導(dǎo)致故障排除效率低下,停電時(shí)間過長造成經(jīng)濟(jì)損失等問題。當(dāng)前電力系統(tǒng)需要一套能夠自動(dòng)精確判斷故障點(diǎn)經(jīng)濟(jì)高效的互聯(lián)網(wǎng)繼電保護(hù)裝置。隨著電力系統(tǒng)規(guī)模不斷的擴(kuò)大和電壓等級(jí)的提高,保護(hù)裝置芯片也從8位微處理器一直發(fā)展到32位處理器,處理器的運(yùn)算速度越來越快[2],執(zhí)行的功能也越來越多,越來越復(fù)雜。本設(shè)計(jì)中采用意法半導(dǎo)體公司生產(chǎn)的32位低功耗STM32F407芯片作為核心處理器,可極大的提高處理效率并生產(chǎn)和使用節(jié)約成本。而上位機(jī)采用Microsoft公司開發(fā)的C#編程語言和VisualStudio2013開發(fā)環(huán)境,這種編程語言目前被各大公司廣泛使用,因?yàn)樵撜Z言極大的簡化了計(jì)算機(jī)軟件的開發(fā)過程,降低了開發(fā)難度,并且該語言基于Windows系統(tǒng)開發(fā)出的界面簡潔美觀,使開發(fā)者不用了解晦澀難懂的底層操作方法就可以方便的調(diào)用Windows提供的各種API。本設(shè)計(jì)的主要意義在于能夠聯(lián)網(wǎng)遠(yuǎn)程精確反映電力系統(tǒng)的各類故障,減少人力物力的投資,使電力系統(tǒng)更加智能化、自動(dòng)化、節(jié)約化。另一方面,由于當(dāng)前教科書上幾乎沒有微機(jī)保護(hù)的實(shí)踐性教程,學(xué)生所學(xué)的理論知識(shí)無法通過實(shí)踐來轉(zhuǎn)化為自己對(duì)微機(jī)保護(hù)深刻的認(rèn)知,因此本設(shè)計(jì)不僅可以用在實(shí)際電力系統(tǒng)中用作電力系統(tǒng)的繼電保護(hù),還可以應(yīng)用于繼電保護(hù)的實(shí)踐教學(xué)。1.2繼電保護(hù)裝置在國內(nèi)外發(fā)展現(xiàn)狀我國計(jì)算機(jī)繼電保護(hù)的研究是從70年代末才開始的,隨后國內(nèi)設(shè)計(jì)出很多優(yōu)秀的繼電保護(hù)裝置。從90年代開始我國繼電保護(hù)技術(shù)進(jìn)入了微機(jī)保護(hù)的時(shí)代,隨著單片機(jī)工藝的成熟和硬件制造水平的大大提高,微機(jī)保護(hù)在軟件、算法等方面取得了很多成果,并逐步應(yīng)用于實(shí)踐之中[3]。現(xiàn)在國內(nèi)外微機(jī)保護(hù)均應(yīng)用了計(jì)算機(jī)技術(shù)領(lǐng)域的先進(jìn)技術(shù):大規(guī)模集成電路,A/D模數(shù)轉(zhuǎn)換、數(shù)字濾波技術(shù)和抗干擾技術(shù),使微機(jī)保護(hù)在速動(dòng)性、可靠性等方面均遠(yuǎn)遠(yuǎn)優(yōu)于電磁型等傳統(tǒng)保護(hù)。ARM處理器在速度方面DSP不相上下,甚至超過DSP。而且ARM集成了豐富的外圍控制接口,用戶幾乎不用再添加外圍器件就能實(shí)現(xiàn)需要的功能,既節(jié)約硬件成本,又降低了設(shè)計(jì)錯(cuò)誤率[4]。國外微機(jī)保護(hù)經(jīng)歷了三代保護(hù)設(shè)計(jì)上的更新?lián)Q代,并以微處理器技術(shù)與多種已被提出并被可靠證明和廣泛應(yīng)用的算法相結(jié)合為基礎(chǔ),不斷為新型微機(jī)保護(hù)的完善創(chuàng)造良好的實(shí)現(xiàn)條件[5]。雖然國內(nèi)外在電力系統(tǒng)繼電保護(hù)裝置的研究上取得了不錯(cuò)的成績,但是在實(shí)際應(yīng)用中依然存在著問題,主要就是保護(hù)和監(jiān)控的一體化和保護(hù)裝置的經(jīng)濟(jì)性問題[6]。1.3研究目標(biāo)及內(nèi)容本設(shè)計(jì)的研究方向是基于微機(jī)保護(hù)的繼電保護(hù)的設(shè)計(jì),在總結(jié)了國內(nèi)外研究成果的基礎(chǔ)上,結(jié)合不斷發(fā)展的嵌入式技術(shù),采用STM32芯片作為核心處理器,設(shè)計(jì)出具有低成本、低功耗、高速度、遠(yuǎn)程化操作的繼電保護(hù)裝置。研究目標(biāo):該系統(tǒng)能夠遠(yuǎn)程監(jiān)視控制系統(tǒng)運(yùn)行,在正常運(yùn)行時(shí)精確地顯示電力系統(tǒng)的運(yùn)行狀態(tài),電流值、波形等電力系統(tǒng)參數(shù),發(fā)生故障時(shí)能精確反映,并自動(dòng)執(zhí)行跳閘或發(fā)出信號(hào)等操作,最終保護(hù)整個(gè)電力系統(tǒng)的安全運(yùn)行。研究內(nèi)容:利用以ARM為核心的處理器搭建硬件電路,設(shè)計(jì)出電流繼電保護(hù)保護(hù)裝置。硬件系統(tǒng)的設(shè)計(jì)主要包括:測量電路、以STM32為核心的主電路板、信號(hào)電路、跳閘電路。軟件程序的設(shè)計(jì)主要包括:LCD顯示屏界面的設(shè)計(jì)、信號(hào)的采集、繼電保護(hù)邏輯的判斷、對(duì)于采集數(shù)據(jù)的處理算法、利用串口實(shí)現(xiàn)下位機(jī)與上位機(jī)的通信等,利用Keil軟件實(shí)現(xiàn)下位機(jī)程序的開發(fā)設(shè)計(jì)。利用C#語言完成上位機(jī)監(jiān)控軟件的設(shè)計(jì),實(shí)現(xiàn)顯示電流有效值,電流波形,并可以控制斷路器開合閘的上位機(jī)軟件。本設(shè)計(jì)的特色:以STM32F407ZGT6處理器為核心的保護(hù)裝置,實(shí)現(xiàn)了低成本、低功耗、高效率處理的設(shè)計(jì),利用C#語言和語言設(shè)計(jì)了上位機(jī)監(jiān)控界面,實(shí)現(xiàn)了下位機(jī)和上位機(jī)兩種方式的監(jiān)控。上位機(jī)使用軟件操作,下位機(jī)將所有器件封裝到一個(gè)配電箱里,使保護(hù)裝置的移動(dòng)和安裝都變得極為方便。1.4本文的總體結(jié)構(gòu)本文的總體結(jié)構(gòu)如下:1緒論介紹了本設(shè)計(jì)的研究背景、意義,介紹了國內(nèi)外電力系統(tǒng)繼電保護(hù)領(lǐng)域的研究現(xiàn)狀,重點(diǎn)闡述了本設(shè)計(jì)的研究目標(biāo)和研究內(nèi)容。2系統(tǒng)硬件電路設(shè)計(jì)詳細(xì)介紹了系統(tǒng)硬件電路的設(shè)計(jì),分析了硬件設(shè)計(jì)需要實(shí)現(xiàn)的功能和實(shí)現(xiàn)功能所使用的器件,并詳細(xì)說明了每個(gè)器件的參數(shù)和使用方法。3下位機(jī)系統(tǒng)程序設(shè)計(jì)承接了上一章節(jié)提到的下位機(jī)硬件應(yīng)該實(shí)現(xiàn)的功能,對(duì)STM32單片機(jī)的程序做了詳細(xì)的講解。4上位機(jī)監(jiān)控系統(tǒng)的設(shè)計(jì)介紹了設(shè)計(jì)上位機(jī)三相電力系統(tǒng)電流保護(hù)系統(tǒng)的軟件環(huán)境,并詳細(xì)說明了所設(shè)計(jì)的各個(gè)界面的詳細(xì)功能和設(shè)計(jì)方法。5總結(jié)與展望總結(jié)研究成果以及展望下一步研究的工作。

2系統(tǒng)硬件電路設(shè)計(jì)2.1系統(tǒng)測控部分硬件的整體設(shè)計(jì)測控部分由測量部分和控制與信息傳遞部分兩部分組成。但這兩部分不完全是相互獨(dú)立的,這兩部分的聯(lián)結(jié)靠的是主控芯片,就是在緒論中提及的意法半導(dǎo)體公司生產(chǎn)的STM32F407ZG芯片作為核心處理器。測量部分實(shí)現(xiàn)的功能有輸入變換及電壓形成、有源低通濾波ALF、采樣保持S/H、A/D變換采集??刂婆c信息傳遞部分實(shí)現(xiàn)的功能有數(shù)據(jù)處理、TFT屏幕顯示實(shí)時(shí)電流有效值、繼電器信號(hào)輸出、通過串口與上位機(jī)進(jìn)行數(shù)據(jù)傳遞。串行通信數(shù)據(jù)線STM32串行通信數(shù)據(jù)線STM32主控芯片帶光電隔離的跳合閘信號(hào)繼電器輸入變換及電壓形成有源低通濾波三相交變電流輸入ADCCPU定時(shí)器上位機(jī)保護(hù)功能通信接口開關(guān)量輸出部件串行通信數(shù)據(jù)線STM32主控芯片帶光電隔離的跳合閘信號(hào)繼電器輸入變換及電壓形成有源低通濾波三相交變電流輸入ADCCPU定時(shí)器上位機(jī)保護(hù)功能通信接口開關(guān)量輸出部件圖2-1硬件系統(tǒng)的整體框圖2.2系統(tǒng)硬件設(shè)計(jì)中使用的各部分功能模塊介紹2.2.1主控芯片STM32由意法半導(dǎo)體生產(chǎn)的STM32系列單片機(jī)性價(jià)比超高,應(yīng)該沒有之一,而且功能極其強(qiáng)大。該系列單片機(jī)中的STM32F407芯片擁有為需要高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARMCortex-M4內(nèi)核,其強(qiáng)大的功能主要表現(xiàn)在:集成了DSP和FPU指令,168MHz的高速性能使得數(shù)字信號(hào)控制器應(yīng)用達(dá)到了極高的水平,提升了控制算法的執(zhí)行速度和代碼效率[7]。多重AHB總線矩陣和多通道DMA支持程序執(zhí)行和數(shù)據(jù)傳輸并行處理,數(shù)據(jù)傳輸速率非???,由于采用了ST的ART加速器,程序從FLASH運(yùn)行相當(dāng)于0等待。PWM高速定時(shí)器:168MHz最大頻率帶有日歷功能的32位RTC:<1μA的實(shí)時(shí)時(shí)鐘,1秒精度高速USART,可達(dá)10.5Mbits/s它能工作在活躍和休眠兩個(gè)狀態(tài),最大程度的降低了功耗。同時(shí)由于其內(nèi)部集成了12位模擬數(shù)字轉(zhuǎn)換器(ADC):0.41us轉(zhuǎn)換/2.4Msps,使外部硬件電路可以變得更為簡化。鑒于上述優(yōu)點(diǎn),本設(shè)計(jì)采用這款芯片作為繼電保護(hù)裝置核心處理器。其圖片和引腳資料如圖2-2所示:圖2-2STM32F407ZGT6引腳圖本設(shè)計(jì)使用該芯片實(shí)現(xiàn)的主要功能是A/D采樣(使用內(nèi)置ADC)、繼電保護(hù)邏輯判斷(編程判斷)、繼電保護(hù)邏輯輸出(使用STM32的GPIO引腳)、有效值計(jì)算(算法編程)、TFT屏幕實(shí)時(shí)顯示測量值(編程顯示)、與上位機(jī)通信(串行接口通信)。2.2.2霍爾電流傳感器本設(shè)計(jì)采用國內(nèi)厚施公司生產(chǎn)的HBC-LSP型號(hào)閉環(huán)霍爾電流傳感器,表2-1是該傳感器的電氣特性:表2-1霍爾電流傳感器電氣特性額定電流Ipn(A)測量范圍Ip(A)線圈匝比Ns(T)輸出電壓Vo(V)供電電源Vc(V)6-6~+66002.5±2.0±5VDC±5%霍爾電流傳感器的工作原理是原邊電流Ip產(chǎn)生的磁通量與霍爾電壓經(jīng)過放大產(chǎn)生的副邊電流Is通過副邊線圈所產(chǎn)生的磁通量相等,副邊電流Is能精確地反應(yīng)原邊電流。該傳感器有三個(gè)引腳,分別為+5V輸入引腳,GND引腳和信號(hào)輸出引腳,其最大的特點(diǎn)是經(jīng)過傳感器的原邊電流,在輸出端直接輸出的是以2.5V為基準(zhǔn)的電壓。簡單來說,就是當(dāng)原邊輸入電流為0A時(shí),副邊輸出電壓為2.5V,當(dāng)原邊輸入電流為最大值+6A時(shí),副邊輸出電壓為2.5+2.0=4.5V,當(dāng)原邊輸入電流為最小值-6A時(shí),副邊輸出電壓為2.5-2.0=0.5V。這樣一來極大的簡化了采集電路的設(shè)計(jì),由于單片機(jī)ADC的輸入電壓范圍是0~3.3V,所以在 設(shè)計(jì)中就不必?fù)?dān)心由于原邊正弦電流當(dāng)其值為負(fù)的時(shí)候副邊感應(yīng)電壓小于零的情況,只需要設(shè)計(jì)限幅電路,令副邊感應(yīng)電壓超過3.3V時(shí)讀入單片機(jī)的電壓保持在3.3V不再升高,以免電壓過大燒壞單片機(jī)。霍爾電流傳感器原理圖如圖2-3:圖2-3霍爾電流傳感器原理圖2.2.3限壓電路設(shè)計(jì)如上一節(jié)所述,為避免讀入電壓過大燒壞單片機(jī),在電流傳感器和單片機(jī)ADC中間要加入限幅電路。限幅電路的設(shè)計(jì)原理是,在單片機(jī)的輸入端并聯(lián)一個(gè)帶有肖特基二極管和反向電源而且末端接地的電路,當(dāng)電壓小于3.3V時(shí),由于管壓降和反向電壓的作用,二極管處于截至狀態(tài),信號(hào)無法從限幅支路中流通,只能傳遞到單片機(jī)內(nèi)。當(dāng)電壓大于3.3V時(shí),由于已經(jīng)超過限幅支路中反向電壓和管壓降之和,于是二極管導(dǎo)通高出部分的電壓就會(huì)通過限幅電路濾掉。以使單片機(jī)采入的電壓一直保持在3.3V不再升高。限幅電路中使用的元件:肖特基二極管1N58173只1.25~22.5V可調(diào)輸出穩(wěn)壓電源5AMK1751只由于要限制電壓在3.3V所以管壓降與反向電壓之和應(yīng)為3.3V,經(jīng)實(shí)測,肖特基二極管的管壓降大約在0.1~0.2V這個(gè)范圍內(nèi),所以反向電壓就應(yīng)調(diào)節(jié)到3.1V。圖2-4是在Multisim電路仿真軟件中繪制的電路原理圖,圖2-5是仿真后顯示的效果圖,其中紅線代表限幅后的電壓曲線,藍(lán)線代表輸入電壓曲線。可以明顯看到,大于3.3V的部分已經(jīng)被濾除。圖2-4限幅電路原理圖圖2-5限幅電路示波器仿真顯示效果圖2.2.4有源低通濾波電路設(shè)計(jì)要通過ADC將連續(xù)的模擬信號(hào)轉(zhuǎn)換為離散的數(shù)字信號(hào),其中最重要的一點(diǎn)就是香農(nóng)采樣定理,即保證采樣值能完整、正確和唯一的恢復(fù)輸入連續(xù)信號(hào)的充分必要條件是,采樣頻率應(yīng)大于信號(hào)的最高頻率的2倍[8]。而在真實(shí)的電力系統(tǒng)中大量的高次諧波,為了滿足采樣定理并使采樣到的波形精準(zhǔn)顯示,就必須加入濾波裝置。本設(shè)計(jì)采用的是BB(Burr-Brown)公司生產(chǎn)的UAF42有源濾波器制作成的有源濾波器模塊。芯片內(nèi)部原理圖:圖2-6UAF42有源濾波器內(nèi)部原理圖通帶增益確定方法:公式(2-1)其中R1值確定,Rg在左上角滑動(dòng)變阻器上可以調(diào)節(jié)。中心頻率:公式(2-2)其中R1和R2為固定值且相等,C1,C2也是固定值,就是說,增大就可以減小中心頻率,減小就可以增大中心頻率。Rf1和Rf2的值在濾波器模塊的右邊兩個(gè)滑動(dòng)變阻器上可以調(diào)節(jié)。品質(zhì)因數(shù)Q值:公式(2-3)當(dāng)用和調(diào)節(jié)好中心頻率以后,應(yīng)當(dāng)調(diào)節(jié)與的值以改變Q值。應(yīng)注意的是,Q值和通帶增益無法同時(shí)取到最大值,調(diào)節(jié)滑動(dòng)變阻器時(shí),應(yīng)當(dāng)在兩者之間取得一定的平衡。UAF42模塊如圖2-7所示圖2-7UAF42有源濾波器模塊實(shí)物圖供電: ±5V~±18V信號(hào)輸入:幅值在20mV到略低于供電電壓之間信號(hào)輸出:可配置為低通、高通、帶通形式輸出,中心頻率可高至40kHz內(nèi)部放大:可調(diào)至100倍放大輸出2.2.5TFT觸摸屏的介紹及電路設(shè)計(jì)TFT-LCD即薄膜晶體管液晶顯示器也被叫做真彩液晶顯示器。薄膜晶體管(TFT)設(shè)置在液晶顯示屏的每一個(gè)象素上,有效地解決了非選通時(shí)的串?dāng)_問題,使掃描線數(shù)不再影響屏幕的靜態(tài)特性,極大大程度上提高了圖像質(zhì)量。本設(shè)計(jì)中使用的是正點(diǎn)原子公司的3.5英寸TFTLCD模塊,該模塊原理圖和實(shí)物圖如下圖所示:圖2-8TFT模塊原理圖和實(shí)物圖TFTLCD模塊的使用流程如下:圖2-9TFT模塊原理圖和實(shí)物圖2.2.6跳合閘信號(hào)繼電器的設(shè)計(jì)電力系統(tǒng)中,斷路器的合閘和跳閘需要由單片機(jī)采集到輸入電流之后經(jīng)過邏輯判斷,然后控制短路器跳閘或合閘。然而單片機(jī)無法直接控制斷路器的開合,一個(gè)原因是單片機(jī)本身無法輸出那么大的驅(qū)動(dòng)電流使斷路器動(dòng)作,更重要的是在微機(jī)保護(hù)中,強(qiáng)電和弱電部分應(yīng)該嚴(yán)格隔離分開,這樣做的目的是為了保護(hù)弱電部分不受強(qiáng)電部分的干擾,假若斷路器發(fā)生了故障,因?yàn)楦綦x的存在,弱電部分不會(huì)被泄露過來的高電壓大電流造成不可恢復(fù)的損壞。鑒于以上思路,本設(shè)計(jì)采用的是4路帶光耦隔離5V繼電器模塊作為跳合閘信號(hào)輸出模塊。該模塊采用光電隔離和二極管續(xù)流保護(hù),一共4個(gè)小型繼電器,每個(gè)繼電器都引出常開常閉兩組觸點(diǎn),每個(gè)觸點(diǎn)容量為AC250V10A和DC30V10A。圖2-x是該繼電器的原理圖和實(shí)物圖:圖2-104路帶光耦隔離5V繼電器模塊原理圖圖2-114路帶光耦隔離5V繼電器模塊實(shí)物圖2.3配電箱設(shè)計(jì)由于本設(shè)計(jì)是作為一套能夠應(yīng)用在實(shí)際電力系統(tǒng)中的繼電保護(hù)裝置,因此需要高度集成化封閉化,所以需要將其封裝成配電箱。該配電箱主要實(shí)現(xiàn)顯示屏的人機(jī)交互、指示燈信號(hào)、三相電流的輸入輸出和啟動(dòng)關(guān)停整套系統(tǒng)的功能??紤]到以上功能的實(shí)現(xiàn),該配電箱在箱門上開有一個(gè)鑲嵌顯示屏的矩形孔、兩個(gè)鑲嵌啟動(dòng)開關(guān)和急停開關(guān)的圓形孔還有三個(gè)指示燈圓形孔用于顯示三相電路每相的通斷。在箱體下側(cè)面開有一個(gè)矩形孔用于三相電流的輸入輸出,在上側(cè)面上開有一個(gè)鑲嵌散熱風(fēng)扇的散熱孔。在配電箱內(nèi)部,左側(cè)面固定好單片機(jī)主控板,通過排線與箱門上的TFT顯示屏連接在一起,右側(cè)面固定了一個(gè)能夠?qū)⒔涣?20V轉(zhuǎn)換為直流+5V、直流+12V和直流-12V的開關(guān)電源,該電源采用外部交流供電,不使用引入的三相電,轉(zhuǎn)換成直流后直接供給主控芯片和測控版。底層側(cè)面固定著接線端子排,向外引出了7根線,分別為三相電流輸入線和PE線與三相電流輸出線。在底面上安裝了測控版和一個(gè)導(dǎo)軌,導(dǎo)軌上固定了3個(gè)中間繼電器作為模擬斷路器,一個(gè)交流接觸器作為電力系統(tǒng)的供電控制,與箱門上鑲嵌的啟動(dòng)開關(guān)和急停開關(guān)連接,當(dāng)啟動(dòng)開關(guān)按下時(shí)斷路器控制部分就開始供電。配電箱實(shí)物圖如下:(a)(b)圖2-12配電箱實(shí)物圖(a)配電箱實(shí)物外部正視圖;(b)配電箱內(nèi)部實(shí)物圖2.4模擬三相系統(tǒng)設(shè)計(jì)本設(shè)計(jì)中的使用的三相電源使用三相插頭直接從電網(wǎng)中取電,使用空氣開關(guān)作為三相電路的總開關(guān),開關(guān)后引出4根帶插頭的線,可以直接與配電箱引出的三相電流輸入線相連,配電箱的三相電流輸出線又可以接到負(fù)載上。本系統(tǒng)中的負(fù)載用了兩臺(tái)三相異步電動(dòng)機(jī)作為系統(tǒng)模擬負(fù)載,每臺(tái)電機(jī)均采用星形接線以降低啟動(dòng)電流,減少對(duì)電網(wǎng)的沖擊和對(duì)繼電保護(hù)裝置的干擾。模擬三相系統(tǒng)實(shí)物圖如下:圖2-13三相系統(tǒng)實(shí)物圖

3下位機(jī)系統(tǒng)程序設(shè)計(jì)3.1程序總流程下位機(jī)實(shí)現(xiàn)功能的流程是STM32中一個(gè)ADC的三個(gè)通道不斷循環(huán)采集數(shù)據(jù),DMA不占用CPU運(yùn)行時(shí)間在硬件上將ADC采集到的值存儲(chǔ)到設(shè)定的數(shù)組變量中,變量的每一位經(jīng)過ADC的采樣值轉(zhuǎn)換計(jì)算得到電流傳感器傳出的每相電流真實(shí)值,此時(shí)真實(shí)值是三相電流的瞬時(shí)值。程序會(huì)判斷每相電流值的大小,電流值大于整定值時(shí),單片機(jī)會(huì)發(fā)出跳閘信號(hào)當(dāng)瞬時(shí)值采樣到一個(gè)正弦周期后,程序就會(huì)調(diào)用有效值計(jì)算函數(shù),計(jì)算出每相的電流有效值,隨后程序會(huì)將每相的有效值顯示在LCD顯示屏上,LCD屏幕上還會(huì)同步顯示當(dāng)前日期和時(shí)間。與此同時(shí),單片機(jī)還會(huì)將所采集到的數(shù)據(jù)通過串行通信接口同步發(fā)送到上位機(jī)上,發(fā)送的數(shù)據(jù)有三類,分別是電流瞬時(shí)值(用于在上位機(jī)軟件上顯示電流波形)、有效值(在上位機(jī)上顯示有效值)和斷路器狀態(tài)(用于在上位機(jī)軟件上顯示下位機(jī)斷路器上的當(dāng)前工作狀態(tài))。YES上電啟動(dòng)系統(tǒng)初始化YES上電啟動(dòng)系統(tǒng)初始化A/D采樣獲取每相電流采樣值單相采樣值大于大于整定值對(duì)應(yīng)相跳閘定時(shí)發(fā)送電流有效值DMA傳輸有效值算法LCD顯示電流有效值圖3-1系統(tǒng)的主界面流程圖系統(tǒng)上電后的主界面顯示如圖:圖3-2系統(tǒng)的主界面3.2主程序功能詳細(xì)介紹意法半導(dǎo)體公司在設(shè)計(jì)STM32時(shí),同時(shí)提供了一套開發(fā)全面的固件開發(fā)包,這套開發(fā)包中包含了開發(fā)所需要的所有底層操作,這套開發(fā)包就是STM32的庫函數(shù)包,隨著STM32的更新?lián)Q代和廣泛推行,開發(fā)者們根據(jù)官方的庫函數(shù)包又開發(fā)了大量的內(nèi)設(shè)外設(shè)拓展包用于STM32各種內(nèi)設(shè)外設(shè)的初始化和調(diào)用方法。由于庫函數(shù)包和拓展包的存在,極大的節(jié)省了設(shè)計(jì)者的入門難度和設(shè)計(jì)難度,把設(shè)計(jì)者從復(fù)雜的底層寄存器操作中解放出來,將更多的精力放到應(yīng)用程序的開發(fā)上。主程序中主要實(shí)現(xiàn)的就是上一節(jié)提到的程序總流程,主程序的執(zhí)行步驟如下:①在程序中首先引用了程序所需要的庫函數(shù)頭文件和自己編寫的各種外設(shè)頭文件。②定義程序中所用到的各種變量。這里要注意的是程序定義了存放ADC采樣值的數(shù)組ADC_ConveredValue,定義語句是extern__IOu16ADC_ConvertedValue[3];這條語句中extern代表這個(gè)變量在別的子程序塊中也會(huì)使用并賦值,防止程序編譯出現(xiàn)錯(cuò)誤,__IO在STM32中代表類型修飾符volatile,作用就是指示編譯器不要因優(yōu)化而省略此指令,必須每次都直接讀寫其值,被修飾的變量一般是隨時(shí)變化的量,這樣做的意義在于保證將這個(gè)變量里的值賦給別的變量時(shí)是正確的值。③初始化各種庫函數(shù)和子程序函數(shù)④使LCD屏幕顯示復(fù)位狀態(tài)界面⑤在死循環(huán)中執(zhí)行ADC采樣值的變換、當(dāng)前采樣值與整定值的對(duì)比判斷、有效值計(jì)算、有效值在LCD顯示屏上顯示、串口接收和發(fā)送。3.2.1主程序中繼電器邏輯判斷輸出程序的設(shè)計(jì)繼電器邏輯判斷輸出程序?qū)懺趙hile死循環(huán)里面,目的是當(dāng)發(fā)生短路時(shí),單片機(jī)能第一時(shí)間作出反應(yīng)。繼電器發(fā)生跳閘的情況有兩個(gè),一個(gè)是上位機(jī)發(fā)送跳閘信號(hào)遠(yuǎn)程控制跳閘,另一個(gè)就是當(dāng)電流過大超過整定值時(shí)自動(dòng)跳閘。程序如下:if(adNum1>2||state1==0) //adNum1是a相電流瞬時(shí)值整定值為3A,state代表上位 RELAY1=0;//機(jī)發(fā)送的跳閘信號(hào)標(biāo)志位,當(dāng)state=0時(shí),斷路器跳閘if(adNum2>2||state2==0) RELAY2=0; //RELAY2代表b相繼電器,=0時(shí)跳閘,=1時(shí)合閘if(adNum3>2||state3==0) RELAY3=0;繼電器跳閘后,想要執(zhí)行合閘操作,只有在排除故障之后電流恢復(fù)到整定值以下才允許再次合閘,合閘方式有兩種,一個(gè)是上位機(jī)發(fā)出指令遠(yuǎn)程合閘,再一個(gè)就是重啟下位機(jī)系統(tǒng),這樣做的目的是保證電力系統(tǒng)的安全性,線路不恢復(fù)正常不供電,而且不在配電箱上設(shè)計(jì)每相跳閘開關(guān)是為了防止各種異常狀況導(dǎo)致的開關(guān)誤觸而使系統(tǒng)出線不必要的斷電。3.2.2主程序中有效值計(jì)算子程序的設(shè)計(jì)有效值計(jì)算采用了求真有效值的算法,即采樣一個(gè)周期內(nèi)的瞬時(shí)電流值,將每個(gè)值的平方累加,求平均后再開方[9]。由于液晶屏顯示的是有效值,因此本設(shè)計(jì)直接將有效值計(jì)算函數(shù)和液晶屏數(shù)字顯示函數(shù)集成為一個(gè)子函數(shù)Filter(),程序示意代碼如下:voidFilter(void){ if(times<20)//取20次平均 { sum1=sum1+adNum1*adNum1;//瞬時(shí)值的平方和 times++; } else { times=0; sum1=sqrt(sum1/n);//計(jì)算出均方根值,也就是有效值 ed=sum1; LCD_ShowxNum(158,180,ed,1,16,0);//顯示采樣值的整數(shù)部分 pump=(sum1-ed)*100; LCD_ShowxNum(174,180,pump,2,16,0X80);//顯示小數(shù)部分 SendBuff[0]='I';//給有效值發(fā)送緩沖數(shù)組賦值 SendBuff[1]=('0'+ed); SendBuff[2]='.'; SendBuff[3]=('0'+(u16)pump/10); SendBuff[4]=('0'+(u16)pump%10); sum1=0; }}3.2.3主程序中串口接收發(fā)送程序的設(shè)計(jì)本設(shè)計(jì)中的串口接受和發(fā)送均采用了中斷方式,下位機(jī)接收上位機(jī)傳來的數(shù)據(jù)使用了串口中斷,當(dāng)發(fā)生中斷便執(zhí)行接收中斷程序,通過判斷接收的數(shù)據(jù)從而控制斷路器的狀態(tài)。下位機(jī)向上位機(jī)發(fā)送數(shù)據(jù)使用了定時(shí)器中斷,定時(shí)器當(dāng)計(jì)時(shí)500ms便向上位機(jī)發(fā)送一次數(shù)據(jù),發(fā)送的數(shù)據(jù)是下位機(jī)采集到的電流有效值數(shù)據(jù),上位機(jī)可以通過下位機(jī)發(fā)送的電流有效值來顯示采集到的有效值數(shù)據(jù)、計(jì)算出電流波形并判斷出斷路器的狀態(tài)。待發(fā)送的數(shù)據(jù)是存到了char型數(shù)組SendBuff[14]中,以“I”為數(shù)據(jù)報(bào)頭,以“\0”作為數(shù)據(jù)的結(jié)束標(biāo)志,采集的三相電流有效值就存到了中間的數(shù)組位中。串口發(fā)送方法如下:u8t;for(t=0;t<14;t++) { USART_SendData(USART1,SendBuff1[t]);//向串口1發(fā)送數(shù)據(jù) while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發(fā)送結(jié)束 }當(dāng)上位機(jī)向下位機(jī)發(fā)送數(shù)據(jù)時(shí)就會(huì)引起下位機(jī)的串口中斷,下位機(jī)只有當(dāng)接收到0x0d作為結(jié)尾的數(shù)據(jù)才能執(zhí)行中斷程序,數(shù)據(jù)接收完畢,下位機(jī)USART_RX_STA寄存器的最高位將會(huì)置1,從而執(zhí)行中斷程序,接收到的數(shù)據(jù)會(huì)存到接收緩存器中,STM32定義為一個(gè)USART_RX_BUF數(shù)組,由于本設(shè)計(jì)中上位機(jī)設(shè)置發(fā)送的數(shù)據(jù)只有一位,所以,數(shù)據(jù)將會(huì)存到接收緩沖器USART_RX_BUF[0]位中。接下來程序就會(huì)判斷接收的數(shù)據(jù)是什么,從而執(zhí)行相應(yīng)的操作。串口接收部分程序如下:switch(USART_RX_BUF[0]){ case'O':state1=1,state2=1,state3=1,GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2);break; case'S':GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2);break; case'1':state1=0;break; case'2':state1=1,RELAY1=1;break; case'3':state2=0;break; case'4':state2=1,RELAY2=1;break; case'5':state3=0;break; case'6':state3=1,RELAY3=1;break; default:break;}USART_RX_STA=0;3.3各子程序模塊功能詳細(xì)介紹3.3.1ADC初始化子程序塊設(shè)計(jì)本設(shè)計(jì)采集的是頻率為50Hz的交變電流,變化很快,而且使用ADC的三個(gè)通道循環(huán)輪流采樣。為了保證精度和采樣速度,在ADC子程序的設(shè)計(jì)上結(jié)合了DMA傳輸方式。本來所有的外設(shè)和存儲(chǔ)器之間的數(shù)據(jù)傳遞都要通過CPU,當(dāng)需要傳輸數(shù)據(jù)量太大或者外設(shè)數(shù)目太多時(shí),CPU即便速度再快也無法協(xié)調(diào)好其他功能和外設(shè)與存儲(chǔ)間的數(shù)據(jù)傳遞。為了解決這個(gè)問題,就加入了DMA。DMA即直接存儲(chǔ)器訪問,DMA傳輸方式通過硬件為RAM與外設(shè)開辟一條直接傳送數(shù)據(jù)的通路,無需CPU的介入,使CPU的工作效率大為提高。ADC程序初始化方法:voidAD_Init(){ ①初始化ADC3、DMA2和ADC3對(duì)應(yīng)的GPIOC引腳時(shí)鐘方法:調(diào)用RCCCLOCKCMD庫函數(shù)將對(duì)應(yīng)模塊和引腳使能 ②DMA的初始化設(shè)置方法:主要確定DMA的數(shù)據(jù)流、通道、外設(shè)基地址、內(nèi)存基地址、數(shù)據(jù)傳輸方向、數(shù)據(jù)大小、是否循環(huán)采集等。 ③ADC3的通道選擇與引腳設(shè)置方法:選擇ADC的輸入通道、引腳設(shè)置為模擬輸入通道,不帶上下拉。 ④ADC通用設(shè)置方法:設(shè)置ADC的模式、ADC的工作頻率等。 ⑤ADC初始化設(shè)置方法:設(shè)置ADC的位數(shù)、開啟掃描模式、開啟連續(xù)轉(zhuǎn)換模式、觸發(fā)方式、數(shù)據(jù)對(duì)齊方式、轉(zhuǎn)換通道數(shù)。 ⑥ADC循環(huán)通道設(shè)置方法:將需要采樣的通道通過ADC_RegularChannelConfig函數(shù)設(shè)置采樣排序和采樣周期數(shù)。 ⑦源數(shù)據(jù)變化時(shí)開啟DMA傳輸 ⑧使能ADC3的DMA功能 ⑨使能ADC3⑩開啟軟件轉(zhuǎn)換} 主程序中調(diào)用了在子程序編寫好的初始化函數(shù)AD_Init()后,ADC就會(huì)自動(dòng)的循環(huán)采樣,而DMA在數(shù)組采樣值變化后會(huì)將當(dāng)前采樣值存入到在主程序里聲明好的ADC采樣值數(shù)組變量中。3.3.2LCD顯示屏初始化和數(shù)據(jù)寫入子程序塊設(shè)計(jì)本設(shè)計(jì)中實(shí)現(xiàn)LCD顯示屏的初始化和數(shù)據(jù)的寫入直接使用了STM32開發(fā)者開發(fā)的LCD程序塊,該程序塊集成了LCD顯示屏的初始化功能、字符顯示函數(shù)、字符串顯示函數(shù)、單數(shù)字顯示函數(shù)、多數(shù)字顯示函數(shù)、畫點(diǎn)函數(shù)、矩形繪制函數(shù)等常用函數(shù)。初始化方法:LCD_Init();字符串顯示函數(shù):LCD_ShowString(u16x,u16y,u16width,u16height,u8size,u8*p);其中x,y分別為文字顯示的起始坐標(biāo),width,hight,size分別是其寬、高和字體大小,最后一個(gè)參數(shù)就是要顯示的字符串。多個(gè)數(shù)字顯示函數(shù):LCD_ShowxNum(u16x,u16y,u32num,u8len,u8size,u8mode);x,y同樣是起始坐標(biāo),num是要顯示的數(shù)字,len、size代表要顯示的數(shù)字長度和字體大小,mode參數(shù)有0,1兩個(gè)選項(xiàng),0代表非疊加顯示,就是不覆蓋原來該位置的顯示的數(shù)據(jù),1代表疊加顯示,即覆蓋原有區(qū)域顯示的數(shù)據(jù)。3.3.3定時(shí)器子程序塊設(shè)計(jì)設(shè)計(jì)中使用了定時(shí)器的中斷功能來使下位機(jī)串口向上位機(jī)發(fā)送數(shù)據(jù)。每當(dāng)定時(shí)器發(fā)生一次中斷,便執(zhí)行一次串口發(fā)送程序。以下程序就是定時(shí)器的初始化程序:voidTIM3_Int_Init(u16arr,u16psc){ TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStructure; NVIC_InitTypeDefNVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);///使能TIM3時(shí)鐘 TIM_TimeBaseInitStructure.TIM_Period=arr; //自動(dòng)重裝載值 TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//定時(shí)器分頻 TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上計(jì)數(shù)模式 TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//允許定時(shí)器3更新中斷 TIM_Cmd(TIM3,ENABLE);//使能定時(shí)器3 NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//定時(shí)器3中斷 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;//搶占優(yōu)先級(jí)1 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;//子優(yōu)先級(jí)3 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);}3.3.4信號(hào)繼電器初始化子程序塊設(shè)計(jì)信號(hào)繼電器初始化子程序塊的設(shè)計(jì)主要使用了STM32的GPIO口,即初始化所需要的GPIO引腳。本設(shè)計(jì)所用到的跳合閘信號(hào)繼電器是高電平觸發(fā),控制3個(gè)繼電器,所以用了GPIOB的PB0、PB1、PB2引腳。下面就是初始化這三個(gè)引腳,并設(shè)置引腳的屬性。voidRELAY_Init(void){ GPIO_InitTypeDefGPIO_InitStructure;//使能GPIOB時(shí)鐘 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);//設(shè)置引腳屬性 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;//普通輸出模式 GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化//在初始化之后,給所有引腳置位,即讓所有引腳都為高電平 GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2);}3.3.5實(shí)時(shí)時(shí)鐘顯示子程序塊設(shè)計(jì)本設(shè)計(jì)還要實(shí)現(xiàn)LCD屏幕實(shí)時(shí)顯示當(dāng)前時(shí)間的功能,STM32單片機(jī)中帶有實(shí)時(shí)時(shí)鐘功能,兩個(gè)32位寄存器包含二進(jìn)碼十進(jìn)數(shù)格式的秒、分鐘、小時(shí)、星期、日期、月份和年份。STM32F4的RTC可以自動(dòng)將月份的天數(shù)補(bǔ)償為28、29(閏年)、30和31天。并且還可以進(jìn)行夏令時(shí)補(bǔ)償。RTC模塊和時(shí)鐘配置是在后備區(qū)域,由片上后備電池供電,即使在系統(tǒng)復(fù)位或從待機(jī)模式喚醒后RTC的設(shè)置依然維持不變,而且時(shí)間依然保持當(dāng)前時(shí)間,只要后備區(qū)域供電正常,那么RTC將可以一直運(yùn)行。在本設(shè)計(jì)中直接使用了STM32自帶的RTC初始化程序,只要將RTC子程序中的初始日期時(shí)間設(shè)置好執(zhí)行初始化,便可以精確的提供當(dāng)前時(shí)間,然后再調(diào)用LCD顯示屏寫入函數(shù)將日期時(shí)間寫到指定的位置即可。

4上位機(jī)監(jiān)控系統(tǒng)的設(shè)計(jì)4.1C#編程語言和MicrosoftVisualStudio2013集成開發(fā)環(huán)境簡介在本設(shè)計(jì)中整個(gè)上位機(jī)監(jiān)控系統(tǒng)都是在MicrosoftVisualStudio2013(以下簡稱VS2013)這個(gè)軟件環(huán)境中采用C#編程語言開發(fā)的,VisualStudio是微軟公司推出的集成開發(fā)環(huán)境,它支持多種程序語言的開發(fā)如C#、VisualC++、VisualBasic和VisualF#等。它可以通過拖拽控件的方式非常簡單方便的創(chuàng)建Windows平臺(tái)下的Windows窗口應(yīng)用程序,是目前最流行的Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境[10-12]。本設(shè)計(jì)中用VisualStudio中的WinForm設(shè)計(jì)上位機(jī)界面,采用C#編程語言編寫后臺(tái)代碼,整套程序的設(shè)計(jì)直觀流暢簡單。4.2三相電流繼電保護(hù)系統(tǒng)Windows窗體設(shè)計(jì)本設(shè)計(jì)中,上位機(jī)系統(tǒng)設(shè)計(jì)了3個(gè)界面,分別為系統(tǒng)登陸界面、保護(hù)系統(tǒng)主界面和修改密碼界面。下面將依次對(duì)這些界面進(jìn)行介紹。4.2.1登錄界面的設(shè)計(jì)登錄界面的設(shè)計(jì)主要用了兩個(gè)TextBox控件作為用戶名和密碼的輸入框,每個(gè)框前對(duì)應(yīng)有Lable控件顯示文字指示“用戶名”和“密碼”,在輸入框下面添加了兩個(gè)Button控件作為登陸確認(rèn)或退出登錄,分別用“登陸”和“取消”表示。登錄界面如圖5-4所示:圖4-1系統(tǒng)登錄界面本設(shè)計(jì)在密碼框部分的屬性設(shè)置中,UseSysTemPasswordChar屬性設(shè)置為True,這樣,在輸入密碼時(shí),密碼就變?yōu)?**來代替原密碼,這保證了輸入時(shí)的隱私性。同時(shí)后臺(tái)還會(huì)判斷用戶名和密碼是否有輸入,如果沒有輸入界面上會(huì)在輸入框后出現(xiàn)ErrorWarning組件提示用戶名或密碼沒有輸入。當(dāng)用戶名和密碼輸入完畢時(shí),如果用戶名和密碼正確,點(diǎn)擊登陸按鈕便可以登陸進(jìn)系統(tǒng)主界面,如果不正確就會(huì)彈出提示框提示用戶名或密碼輸入錯(cuò)誤。這使用了登陸按鈕的Button_Click事件。為了登陸方便快捷,不用每次都用鼠標(biāo)點(diǎn)擊登陸按鈕登陸,在登陸界面的AcceptButten屬性中將登陸按鈕的Name寫入,即可每次輸入完用戶密碼后敲擊回車就可以實(shí)現(xiàn)登陸按鈕的點(diǎn)擊。登陸界面的后臺(tái)代碼詳見附錄。4.2.2三相電流繼電保護(hù)系統(tǒng)主界面設(shè)計(jì)系統(tǒng)主界面主要實(shí)現(xiàn)的功能有:系統(tǒng)的重新登錄、進(jìn)入登陸密碼修改界面、進(jìn)入數(shù)據(jù)庫界面、串口設(shè)置、系統(tǒng)的啟動(dòng)和關(guān)閉、采樣電流有效值的顯示、斷路器控制、采樣電流波形的顯示、顯示當(dāng)前登錄用戶、顯示當(dāng)前的串口號(hào)、顯示通信是否正常。圖5-5是系統(tǒng)的主界面圖:圖4-2系統(tǒng)主界面圖自上而下介紹,首先是菜單界面,有系統(tǒng)管理、數(shù)據(jù)庫、串口設(shè)置、幫助四個(gè)菜單項(xiàng),每個(gè)菜單項(xiàng)都可以通過后面標(biāo)注的快捷鍵打開。系統(tǒng)管理菜單項(xiàng)中有三個(gè)子菜單項(xiàng),分別為重新登錄、修改密碼、退出系統(tǒng)。點(diǎn)擊數(shù)據(jù)庫菜單項(xiàng)就可以直接進(jìn)入系統(tǒng)運(yùn)行信息數(shù)據(jù)庫界面。串口設(shè)置菜單項(xiàng)是設(shè)置串口號(hào)、串口波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位的單選菜單項(xiàng),著重介紹一下串口設(shè)置菜單項(xiàng)。圖4-3串口設(shè)置菜單項(xiàng)詳細(xì)內(nèi)容如圖所示,串口設(shè)置菜單項(xiàng)可以設(shè)置串口通信的所有內(nèi)容,而且本設(shè)計(jì)將其設(shè)置為單選菜單,即一次只能選擇一項(xiàng),保證了串口各項(xiàng)設(shè)置的正確,考慮到每次啟動(dòng)系統(tǒng)的時(shí)候人們都不會(huì)想到去設(shè)置串口,所以本系統(tǒng)啟動(dòng)時(shí)默認(rèn)打開COM4口(因?yàn)樵诒驹O(shè)計(jì)中下位機(jī)默認(rèn)連在上位機(jī)的COM4口),波特率為115200,數(shù)據(jù)位8位,停止位1位,無奇偶校驗(yàn)。而且每次打開系統(tǒng)的時(shí)候,在界面底部一欄會(huì)顯示用戶選擇的COM口,當(dāng)開始接收數(shù)據(jù)時(shí),如果串口設(shè)置錯(cuò)誤,在底部會(huì)用紅字顯示串口錯(cuò)誤信息。打開系統(tǒng)主界面后,斷路器控制一欄的所有按鈕都顯示不可用狀態(tài),當(dāng)點(diǎn)擊啟動(dòng)系統(tǒng)按鈕后用戶就可以控制每相斷路器的跳合閘,同時(shí)系統(tǒng)開始接受下位機(jī)傳過來的數(shù)據(jù),并繪制波形曲線,而且啟動(dòng)系統(tǒng)按鈕被設(shè)為不可用,這是因?yàn)閱?dòng)按鈕的Button_Click事件中寫入了開啟串口語句,為了防止多次開啟串口發(fā)生錯(cuò)誤,于是只允許啟動(dòng)按鈕按下一次,直到關(guān)閉系統(tǒng)按鈕按下才可以重置系統(tǒng)狀態(tài),啟動(dòng)系統(tǒng)按鈕可以重新使用。參數(shù)監(jiān)控一欄可以顯示下位機(jī)傳來的三相電流有效值,并顯示三相狀態(tài),正常運(yùn)行時(shí)狀態(tài)欄顯示“正?!保?dāng)上位機(jī)控制跳閘時(shí),對(duì)應(yīng)的狀態(tài)輸出框會(huì)顯示“手動(dòng)跳閘”,當(dāng)系統(tǒng)由于電流過大自動(dòng)跳閘時(shí),對(duì)應(yīng)跳閘相會(huì)顯示“發(fā)生故障”,而且對(duì)應(yīng)斷路器合閘控制按鈕會(huì)被設(shè)置為不可用,直到線路恢復(fù)正常,合閘按鈕才重新變?yōu)榭捎脿顟B(tài),控制斷路器合閘。上位機(jī)系統(tǒng)還可以繪制實(shí)時(shí)的電流波形,本設(shè)計(jì)在波形顯示一欄中,添加了3個(gè)PictureBox,每個(gè)PictureBox通過下位機(jī)傳入的電流瞬時(shí)值和編寫的波形繪制后臺(tái)代碼可以顯示一相的波形。顯示效果如圖4-7:圖4-4電流波形顯示效果圖4.2.3修改密碼界面設(shè)計(jì)點(diǎn)擊主界面中系統(tǒng)管理菜單項(xiàng)的修改密碼菜單可以彈出修改密碼界面,由于本設(shè)計(jì)中沒有加入數(shù)據(jù)庫,修改密碼只實(shí)現(xiàn)了界面功能,并不能真正的修改密碼。修改密碼界面如下:圖4-5修改密碼界面當(dāng)什么都不輸入點(diǎn)擊確認(rèn),程序會(huì)彈出提示框,告訴用戶“請(qǐng)輸入原密碼”。如果輸入用戶名和密碼,但密碼和原密碼不是同一個(gè)時(shí),程序會(huì)彈出提示框提示“原密碼輸入不正確,請(qǐng)重新輸入”。最后是判斷新密碼的一致性,當(dāng)用戶名和原密碼都輸入正確,但新密碼的兩次輸入不一致時(shí),程序會(huì)彈出提示框提示“請(qǐng)輸入新密碼,并且兩次輸入的新密碼必須相同”。4.3三相電流繼電保護(hù)系統(tǒng)上位機(jī)部分底層功能的設(shè)計(jì)實(shí)現(xiàn)這一小節(jié)主要介紹的就是上位機(jī)后臺(tái)程序中串口通訊思路與方法和波形繪制方法。在C#編程語言中,實(shí)現(xiàn)串口通訊只要使用serialport組件就可以。一般而言,要想實(shí)現(xiàn)串口高速大量數(shù)據(jù)通訊,需要使用serialport的datarecieved事件,但由于使用該事件需要涉及到多線程操作思想和委托方法,受能力限制,本設(shè)計(jì)擬不采用此方法。本設(shè)計(jì)中采用的方法是使用定時(shí)器中斷的方法,每發(fā)生一次定時(shí)器中斷便進(jìn)行一次串口數(shù)據(jù)的接收。串口數(shù)據(jù)接收部分程序如下:privatevoidReceiveData(){ if(serialPort.IsOpen==true)//判斷串口是否打開 { serialPort.Read(bt,0,14);//從串口接收14位的數(shù)據(jù) serialPort.Close();//關(guān)閉一次串口(不知道為什么,但是是必須的) if(bt[0]=='I'&&bt[13]=='\0')//判斷報(bào)頭和報(bào)尾 { I1Recieve[0]=bt[1];//從接收的數(shù)據(jù)中分離出a相電流有效值 I1Recieve[1]=bt[2]; I1Recieve[2]=bt[3]; I1Recieve[3]=bt[4]; I2Recieve[0]=bt[5];//從接收的數(shù)據(jù)中分離出b相電流有效值 I2Recieve[1]=bt[6]; I2Recieve[2]=bt[7]; I2Recieve[3]=bt[8]; I3Recieve[0]=bt[9];//從接收的數(shù)據(jù)中分離出c相電流有效值 I3Recieve[1]=bt[10]; I3Recieve[2]=bt[11]; I3Recieve[3]=bt[12]; } serialPort.Open();//打開之前關(guān)閉的串口 }}串口發(fā)送直接調(diào)用的串口發(fā)送方法,觸發(fā)串口中斷向下位機(jī)發(fā)送數(shù)據(jù),由于下位機(jī)的要求,數(shù)據(jù)結(jié)尾一定要有0x0d,即回車換行符。串口發(fā)送程序如下:privatevoidSendData(stringstr){ if(serialPort.IsOpen==false)//判斷如果串口關(guān)閉則打開串口 { serialPort.Open(); serialPort.Write(str+"\r\n");//串口發(fā)送(寫入)函數(shù),數(shù)據(jù)尾一定為回車換行符(\r\n) } else { serialPort.Write(str+"\r\n"); }}在上位機(jī)系統(tǒng)的設(shè)計(jì)中,波形的繪制方法采用了每次刷新一個(gè)繪圖數(shù)組畫點(diǎn)連線的方式。在上面小節(jié)中介紹到,上位機(jī)的波形繪制使用了三個(gè)PictureBox,每個(gè)PictureBox都使用了Paint事件來繪圖中定義了三個(gè)繪圖數(shù)組,數(shù)組的元素個(gè)數(shù)正好是每個(gè)繪圖窗口橫坐標(biāo)點(diǎn)的個(gè)數(shù)。主程序定時(shí)啟動(dòng)串口接收函數(shù),每執(zhí)行一次串口接收程序,就會(huì)將當(dāng)前的每相的采樣值加入到每相繪圖數(shù)組的當(dāng)前位中,使用this.Refresh()函數(shù)觸發(fā)PictureBox的Paint事件。隨后,Paint事件就會(huì)畫出數(shù)組中的所有點(diǎn)并將其連線。當(dāng)數(shù)組的元素記滿后,會(huì)清零當(dāng)前數(shù)組標(biāo)號(hào),重新填充數(shù)組。從效果上看就是波形繪制到窗口右邊緣時(shí),就會(huì)重新回到窗口左邊緣繪制。波形繪制部分程序如下:privatevoidwavePaint(intch){for(intx=0;x<20;x++){ sin[x]=Convert.ToSingle(Math.Sin(Math.PI*x/10)*I1*Math.Sqrt(2));

data1[ia]=sin[x];ia++;if(ia==n) ia=0;}this.Refresh();//刷新,導(dǎo)致窗口重繪}privatevoidaPhaseWaveForm_Paint(objectsender,PaintEventArgse){for(inti=0;i<n;i++) { points1[i].X=aPhaseWaveForm.Width/n*i;points1[i].Y=(aPhaseWaveForm.Height-data1[i]*aPhaseWaveForm.Height/vMax1)/2; } RectangleFrect=newRectangleF(points1[ia].X-r,points1[ia].Y-r,r+r,r+r); e.Graphics.DrawLine(newPen(Color.Green,2),0,aPhaseWaveForm.Height/2,aPhaseWaveForm.Width,aPhaseWaveForm.Height/2); e.Graphics.FillEllipse(newSolidBrush(Color.Red),rect); e.Graphics.DrawLines(newPen(Color.Yellow,1),points1);}上位機(jī)另一個(gè)重要的底層功能是合閘限制,其工作原理是當(dāng)系統(tǒng)由于電流過大自動(dòng)跳閘時(shí),上位機(jī)能夠鎖住合閘按鈕,不允許上位機(jī)監(jiān)控人員手動(dòng)合閘,只有當(dāng)線路修復(fù)后,由下位機(jī)通過重啟系統(tǒng)來合閘,上位機(jī)當(dāng)判斷到下位機(jī)線路修復(fù)完畢,才允許上位機(jī)合閘。當(dāng)上位機(jī)手動(dòng)跳閘時(shí),便不會(huì)出現(xiàn)鎖合閘按鈕現(xiàn)象,允許手動(dòng)再次合閘。

5總結(jié)與下一步的工作整個(gè)設(shè)計(jì)完成了對(duì)于電力系統(tǒng)電流保護(hù)裝置上位機(jī)和下位機(jī)兩部分的設(shè)計(jì),經(jīng)過測試可以很好的完成預(yù)想的功能,能夠?qū)收涎杆倬_的反應(yīng)。同時(shí)整個(gè)裝置設(shè)計(jì)了兩種監(jiān)控方式,下位機(jī)上的TFT顯示屏能夠?qū)崟r(shí)迅速的顯示三相電流的有效值和當(dāng)前日期時(shí)間,上位機(jī)能夠快速精確地接收下位機(jī)傳來的信息,并能夠顯示每相電流的大致波形曲線,另外還可以模擬遠(yuǎn)程控制斷路器跳閘。經(jīng)過測試它可以在WindowsXP和Windows7系統(tǒng)上正常運(yùn)行。在整個(gè)畢業(yè)設(shè)計(jì)的設(shè)計(jì)過程中,遇到了很多問題,從電力系統(tǒng)繼電保護(hù)的理論知識(shí)的學(xué)習(xí)到下位機(jī)實(shí)驗(yàn)電路的設(shè)計(jì),從電路的整定計(jì)算到軟件算法的設(shè)計(jì),每一個(gè)過程都是在不斷的遇到問題然后解決問題。在此次設(shè)計(jì)中用到的下位機(jī)控制芯片STM32和上位機(jī)編程語言C#都是第一次使用,在設(shè)計(jì)的過程中,邊學(xué)邊做,完成了整個(gè)系統(tǒng)的設(shè)計(jì)。在設(shè)計(jì)的過程中遇到的問題經(jīng)過鉆研和搜索都得到了解決,在這期間自己的專業(yè)知識(shí)和專業(yè)技能提高得很多,更積攢了項(xiàng)目開發(fā)的經(jīng)驗(yàn),為以后的工作打下了良好的基礎(chǔ)。在時(shí)間倉促之下,使用了電力系統(tǒng)電流保護(hù)、ARM處理器、C#上位機(jī)編程語言等多方面的專業(yè)知識(shí),加上本來自己就是現(xiàn)學(xué)現(xiàn)賣,能力所限,整個(gè)系統(tǒng)難免存在不足和需要改進(jìn)之處。今后還會(huì)繼續(xù)學(xué)習(xí)繼續(xù)改進(jìn),使該設(shè)計(jì)更加完善。本設(shè)計(jì)在未來擬加入Internet互聯(lián)網(wǎng)部分,管理者可以隨時(shí)隨地通過網(wǎng)頁查看電力系統(tǒng)運(yùn)行信息。而且在上位機(jī)上加入數(shù)據(jù)庫,真正的實(shí)現(xiàn)保存實(shí)時(shí)運(yùn)行數(shù)據(jù)。在上下位機(jī)的通信上,打算把原有的串口數(shù)據(jù)線通信改為3G-DTU模塊通信,上位機(jī)與下位機(jī)之間使用3G數(shù)據(jù)信號(hào)通過移動(dòng)運(yùn)營商進(jìn)行通信,真正的實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。

參考文獻(xiàn)[1]張保會(huì),尹項(xiàng)根.電力系統(tǒng)繼電保護(hù)(第二版)[M].北京:中國電力出版社,2010:1-2[2]劉震.基于DSP的微機(jī)距離保護(hù)的研究與開發(fā)[D].濟(jì)南:山東大學(xué)碩士學(xué)位論文,2009.[3]景勝.我國微機(jī)保護(hù)的現(xiàn)狀與發(fā)展[J].繼電器,2001,29(10):1-4.[4]張旭,亓學(xué)廣.基于STM32電力系統(tǒng)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].電子測量技術(shù),2010,33(11):90-92.[5]劉益青,高偉聰,魏鵬.基于MCU+DSP多處理器構(gòu)架的微機(jī)保護(hù)硬件平臺(tái)設(shè)計(jì)[J].電力系統(tǒng)保護(hù)與控制,2010,38(10):89-95.[6]賀家李,李永麗.電力系統(tǒng)繼電保護(hù)原理與實(shí)用技術(shù)[M].北京:中國電力出版社,2009:18-20.[7]Grahampitcher.MCUsfollowM4[J].NewElectronics,2011,44(17):62-66.[8]胡壽松.自動(dòng)控制原理(第六版)[M].北京:科學(xué)出版社,2013:420-425.[9]龐吉耀.一種獲得交流信號(hào)真有效值方法[P].中國專利:CN102539892A,2012-07-04.[10]何偉,陳永強(qiáng).C#的文件處理研究與實(shí)例分析[J].電腦知識(shí)與技術(shù),2009,21:35-38.[11]張藝超.對(duì).NET平臺(tái)核心服務(wù)的應(yīng)用研究[D].廣東:廣東工業(yè)大學(xué)碩士學(xué)位論文,2007.[12]CharlesPetzold.ProgrammingMicrosoftWindowswithC#[M].NewYork:MicrosoftPress,2002:46.

致謝在此次的研究設(shè)計(jì)和撰寫畢業(yè)論文的過程中,我最感謝的是我的導(dǎo)師尊敬的白皓然副教授,他在我的整個(gè)設(shè)計(jì)中給予了我無微不至的關(guān)懷和悉心的指導(dǎo)。我從大二便進(jìn)入了白皓然老師的實(shí)驗(yàn)室,在此期間,受白老師的鼓勵(lì)和引導(dǎo),我學(xué)習(xí)到課堂上學(xué)不到的大量的理論和實(shí)踐知識(shí),然后在本次畢業(yè)設(shè)計(jì)中學(xué)以致用。白老師扎實(shí)的學(xué)習(xí)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),平易近人的人格魅力都深深的感染和激勵(lì)著我。同時(shí)我也要感謝學(xué)校和學(xué)院提供的優(yōu)良實(shí)驗(yàn)環(huán)境和實(shí)驗(yàn)平臺(tái),讓我能學(xué)習(xí)到更多的知識(shí)并完成畢業(yè)設(shè)計(jì)。感謝各位曾經(jīng)指導(dǎo)過我的老師們,也感謝能在百忙之中抽出時(shí)間來審閱這篇論文的老師們,感謝你們能給我四年的大學(xué)生涯畫上圓滿的句號(hào)。這次畢業(yè)設(shè)計(jì)我受益良多,不僅學(xué)習(xí)到了更多的知識(shí),還發(fā)現(xiàn)了自己的不足。無論在知識(shí)方面和思想方面都有了很大的進(jìn)步。最后,祝愿母校能夠越來越好,祝愿白皓然老師和各位老師身體健康,桃李滿天下!

附錄1下位機(jī)系統(tǒng)部分代碼#include"sys.h"#include"usart.h"#include"delay.h"#include"lcd.h"#include"adc.h"#include"relay.h"#include"timer.h"#include"rtc.h"#include"key.h"#include"math.h"extern__IOu16ADC_ConvertedValue[3];extern__IOu8SendBuff[14];extern u8state1,state2,state3;u16ed,times=0;floatpump;floatsum1=0,sum2=0,sum3=0,adNum1,adNum2,adNum3;//求采樣值的有效值voidCalEfct(void){ if(times<20000) { sum1=sum1+adNum1*adNum1; sum2=sum2+adNum2*adNum2; sum3=sum3+adNum3*adNum3; times++; } else { sum1=sqrt(sum1/times); if(sum1<=(float)0.17) sum1=0; ed=sum1; LCD_ShowxNum(292,140,ed,1,24,0);//顯示電壓值的整數(shù)部分,3.1111的話,這里就是顯示3 pump=(sum1-ed)*100; LCD_ShowxNum(316,140,pump,2,24,0X80);//顯示小數(shù)部分(前面轉(zhuǎn)換為了整形顯示),這里顯示的就是111. SendBuff[0]='I'; SendBuff[1]=('0'+ed); SendBuff[2]='.'; SendBuff[3]=('0'+(u16)pump/10); SendBuff[4]=('0'+(u16)pump%10); sum2=sqrt(sum2/times); if(sum2<=(float)0.15) sum2=0; ed=sum2; LCD_ShowxNum(292,180,ed,1,24,0);//顯示電壓值的整數(shù)部分,3.1111的話,這里就是顯示3 pump=(sum2-ed)*100; LCD_ShowxNum(316,180,pump,2,24,0X80);//顯示小數(shù)部分(前面轉(zhuǎn)換為了整形顯示),這里顯示的就是111. SendBuff[5]=('0'+ed); SendBuff[6]='.'; SendBuff[7]=('0'+(u16)pump/10); SendBuff[8]=('0'+(u16)pump%10); sum3=sqrt(sum3/times); if(sum3<=(float)0.15) sum3=0; ed=sum3; LCD_ShowxNum(292,220,ed,1,24,0);//顯示電壓值的整數(shù)部分,3.1111的話,這里就是顯示3 pump=(sum3-ed)*100; LCD_ShowxNum(316,220,pump,2,24,0X80);//顯示小數(shù)部分(前面轉(zhuǎn)換為了整形顯示),這里顯示的就是111. SendBuff[9]=('0'+ed); SendBuff[10]='.'; SendBuff[11]=('0'+(u16)pump/10); SendBuff[12]=('0'+(u16)pump%10); SendBuff[13]='\0'; sum1=0;sum2=0;sum3=0,times=0; }}intmain(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2 delay_init(168);//初始化延時(shí)函數(shù) uart_init(115200); //初始化串口波特率為115200 LCD_Init();//初始化LCD接口 RELAY_Init();//初始化繼電器 AD_Init();//初始化ADC My_RTC_Init(); RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0); //配置WAKEUP中斷,1秒鐘中斷一次 TIM3_Int_Init(5000-1,8400-1); //定時(shí)器時(shí)鐘84M,分頻系數(shù)8400,所以84M/8400=10Khz的計(jì)數(shù)頻率,計(jì)數(shù)5000次為500ms POINT_COLOR=RED; LCD_ShowString(140,25,200,24,24,"CurrentADCData"); POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色 LCD_ShowString(100,140,300,24,24,"APhaseCurrent:0.00A");//先在固定位置顯示小數(shù)點(diǎn) LCD_ShowString(100,180,300,24,24,"BPhaseCurrent:0.00A"); LCD_ShowString(100,220,300,24,24,"CPhaseCurrent:0.00A"); while(1) { adNum1=((float)ADC_ConvertedValue[0]*(3.3/4096)-2.62)*3;//原來應(yīng)為3.3/4096*3原因是互感器變比為600:1 adNum2=((float)ADC_ConvertedValue[1]*(3.3/4096)-2.63)*3; adNum3=((float)ADC_ConvertedValue[2]*(3.3/4096)-2.58)*3; if(adNum1>2||adNum1<(-2)||state1==0) RELAY1=0; if(adNum2>2||adNum1<(-2)||state2==0) RELAY2=0; if(adNum3>2||adNum1<(-2)||state3==0) RELAY3=0; CalEfct(); if(WK_UP==1)//跳閘后的合閘按鍵 { delay_ms(10);//去抖動(dòng) if(WK_UP==1) { if((adNum1<2&&adNum1>(-2))||(adNum2<2&&adNum2>(-2))||(adNum3<2&&adNum3>(-2))) state1=1,state2=1,state3=1,GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2); } } } }//RTCWAKEUP中斷服務(wù)函數(shù)voidRTC_WKUP_IRQHandler(void){ if(RTC_GetFlagStatus(RTC_FLAG_WUTF)==SET)//WK_UP中斷 { POINT_COLOR=BLACK; RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct); sprintf((char*)tbuf,"Time:%02d:%02d:%02d",RTC_TimeStruct.RTC_Hours,RTC_TimeStruct.RTC_Minutes,RTC_TimeStruct.RTC_Seconds); LCD_ShowString(280,60,210,24,24,tbuf); RTC_GetDate(RTC_Format_BIN,&RTC_DateStruct); sprintf((char*)tbuf,"Date:20%02d-%02d-%02d",RTC_DateStruct.RTC_Year,RTC_DateStruct.RTC_Month,RTC_DateStruct.RTC_Date); LCD_ShowString(280,90,210,24,24,tbuf); POINT_COLOR=BLUE; RTC_ClearFlag(RTC_FLAG_WUTF); //清除中斷標(biāo)志 } EXTI_ClearITPendingBit(EXTI_Line22);//清除中斷線22的中斷標(biāo)志 }voidUSART1_IRQHandler(void) //串口1中斷服務(wù)程序{ u8Res; if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)//接收中斷(接收到的數(shù)據(jù)必須是0x0d0x0a結(jié)尾) { Res=USART_ReceiveData(USART1);//(USART1->DR); //讀取接收到的數(shù)據(jù) if((USART_RX_STA&0x8000)==0)//接收未完成 { if(USART_RX_STA&0x4000)//接收到了0x0d { if(Res!=0x0a)USART_RX_STA=0;//接收錯(cuò)誤,重新開始 else//接收完成了 { switch(USART_RX_BUF[0]) { case'O':state1=1,state2=1,state3=1,GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2);break; case'S':GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2);break; case'1':state1=0;break; case'2':state1=1,RELAY1=1;break; case'3':state2=0;break; case'4':state2=1,RELAY2=1;break; case'5':state3=0;break; case'6':s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論